


Middleware CakePHP : intégrez les notifications push et les rappels de messages pour obtenir des notifications en temps réel
Middleware CakePHP : intégrez les notifications push et les rappels de messages pour obtenir des notifications en temps réel
[Introduction]
Dans les applications Internet modernes, les notifications en temps réel sont une fonction très importante. Afin d'obtenir des notifications en temps réel, nous utilisons généralement des notifications push et des rappels de messages. Cet article expliquera comment intégrer les notifications push et les rappels de messages dans les applications CakePHP pour obtenir des fonctions de notification en temps réel.
【Notifications push】
Les notifications push sont principalement utilisées pour envoyer des informations importantes en temps réel aux utilisateurs, telles que de nouveaux messages, des mises à jour de l'état des commandes, etc. Dans CakePHP, nous pouvons utiliser des services push tiers, tels que Firebase Cloud Messaging (FCM) ou Aurora Push, pour envoyer des notifications push.
Tout d'abord, nous devons configurer la clé et les autres paramètres nécessaires du service push dans l'application CakePHP. Vous pouvez ajouter la configuration suivante au fichier config/app.php
: config/app.php
文件中添加如下配置:
'PushNotification' => [ 'fcm' => [ 'server_key' => 'YOUR_SERVER_KEY', 'sender_id' => 'YOUR_SENDER_ID', ], 'jpush' => [ 'app_key' => 'YOUR_APP_KEY', 'master_secret' => 'YOUR_MASTER_SECRET', ], ],
然后,我们需要创建一个推送通知的中间件,用来处理发送推送通知的逻辑。可以在src/Middleware/PushNotificationMiddleware.php
文件中创建如下中间件:
<?php namespace AppMiddleware; use CakeCoreConfigure; use CakeHttpResponse; use CakeHttpServerRequest; use CakeORMTableRegistry; use JPushClient as JPushClient; use PsrHttpMessageResponseInterface; use PsrHttpMessageServerRequestInterface; use RuntimeException; class PushNotificationMiddleware { public function __invoke(ServerRequestInterface $request, ResponseInterface $response, $next) { // 获取请求参数 $data = $request->getParsedBody(); // 获取需要发送的推送通知内容 $message = $data['message']; $userId = $data['user_id']; // 获取用户deviceId $table = TableRegistry::getTableLocator()->get('Devices'); $device = $table->find()->where(['user_id' => $userId])->first(); $deviceId = $device->device_id; // 发送推送通知 $this->sendPushNotification($message, $deviceId); return $next($request, $response); } private function sendPushNotification($message, $deviceId) { // 获取推送服务配置 $pushConfig = Configure::read('PushNotification'); // 使用极光推送发送推送通知 $jpush = new JPushClient($pushConfig['jpush']['app_key'], $pushConfig['jpush']['master_secret']); $jpush->push() ->setPlatform('all') ->addAlias($deviceId) ->message($message) ->send(); } }
最后,我们需要在src/Application.php
文件中注册中间件。可以在bootstrap()
方法中添加以下代码:
$this->addMiddleware(new AppMiddlewarePushNotificationMiddleware());
此时,当我们的应用接收到请求时,推送通知中间件将自动发送推送通知给对应用户。
【消息提醒】
除了推送通知,我们通常还需要在应用内部显示消息提醒,例如弹出消息提示框或者在页面上显示未读消息数。
在CakePHP中,我们可以使用Session组件来存储用户的未读消息数。在用户收到通知的同时,我们将未读消息数加1,并将其存储到Session中。当用户查看消息后,我们将未读消息数归零。
为了方便使用,我们可以创建一个消息提醒的组件。可以在src/Controller/Component/NotificationComponent.php
文件中创建如下组件:
<?php namespace AppControllerComponent; use CakeControllerComponent; use CakeControllerComponentRegistry; use CakeORMTableRegistry; class NotificationComponent extends Component { protected $_defaultConfig = []; public function notify($userId, $message) { // 获取用户的未读消息数 $table = TableRegistry::getTableLocator()->get('Notifications'); $notification = $table->find()->where(['user_id' => $userId])->first(); // 更新未读消息数 if (!$notification) { $notification = $table->newEntity(['user_id' => $userId]); } $notification->unread_count++; $table->save($notification); // 发送消息通知 $this->Flash->success($message); } public function markAsRead($userId) { $table = TableRegistry::getTableLocator()->get('Notifications'); $notification = $table->find()->where(['user_id' => $userId])->first(); // 标记所有消息为已读 $notification->unread_count = 0; $table->save($notification); } }
然后,我们需要在控制器中加载该组件,并使用notify()
和markAsRead()
public function index() { // 加载Notification组件 $this->loadComponent('Notification'); // 发送消息通知 $this->Notification->notify($userId, '您有一条新消息!'); // 标记所有消息为已读 $this->Notification->markAsRead($userId); }
src/Middleware/PushNotificationMiddleware.php
: rrreee
Enfin, nous devons enregistrer le middleware dans le fichiersrc/Application.php
. Vous pouvez ajouter le code suivant dans la méthode bootstrap()
: rrreee
A ce moment, lorsque notre application reçoit la demande, le middleware de notification push enverra automatiquement une notification push à l'utilisateur correspondant.
src/Controller/Component/NotificationComponent.php
: 🎜rrreee🎜 Ensuite, nous devons charger le composant dans le contrôleur et utiliser notify() code > et la méthode <code>markAsRead()
pour envoyer des messages et marquer les messages comme lus : 🎜rrreee🎜À ce stade, nous avons intégré avec succès les notifications push et les rappels de messages, réalisant des fonctions de notification en temps réel. Les utilisateurs pourront recevoir des informations importantes en temps réel en temps opportun et afficher et gérer les messages non lus au sein de l'application. 🎜🎜【Résumé】🎜Cet article explique comment intégrer les notifications push et les rappels de messages dans les applications CakePHP pour obtenir des fonctions de notification en temps réel. En intégrant des services push tiers et en utilisant des composants de session, nous pouvons facilement mettre en œuvre des notifications en temps réel et des rappels de messages pour les utilisateurs de nos applications. Il s'agit d'une fonction très importante pour les applications Internet modernes, qui peut améliorer l'expérience utilisateur et augmenter la fidélité de l'utilisateur. J'espère que cet article sera utile à tout le monde ! 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Le principe du middleware Tomcat est implémenté sur la base des spécifications Java Servlet et Java EE. En tant que conteneur de servlets, Tomcat est responsable du traitement des requêtes et des réponses HTTP et de la fourniture de l'environnement d'exécution des applications Web. Les principes du middleware Tomcat concernent principalement : 1. Le modèle de conteneur ; 2. L'architecture des composants ; 3. Le mécanisme de traitement des servlets ; 4. L'écoute des événements et les filtres ; 6. La sécurité. technologie 9. Mode intégré, etc.
