Maison développement back-end tutoriel php 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

Jul 29, 2023 pm 04:33 PM
中间件 实时通知 cakephp

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',
    ],
],
Copier après la connexion

然后,我们需要创建一个推送通知的中间件,用来处理发送推送通知的逻辑。可以在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();
    }
}
Copier après la connexion

最后,我们需要在src/Application.php文件中注册中间件。可以在bootstrap()方法中添加以下代码:

$this->addMiddleware(new AppMiddlewarePushNotificationMiddleware());
Copier après la connexion

此时,当我们的应用接收到请求时,推送通知中间件将自动发送推送通知给对应用户。

【消息提醒】
除了推送通知,我们通常还需要在应用内部显示消息提醒,例如弹出消息提示框或者在页面上显示未读消息数。

在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);
    }
}
Copier après la connexion

然后,我们需要在控制器中加载该组件,并使用notify()markAsRead()

public function index()
{
    // 加载Notification组件
    $this->loadComponent('Notification');
    
    // 发送消息通知
    $this->Notification->notify($userId, '您有一条新消息!');
    
    // 标记所有消息为已读
    $this->Notification->markAsRead($userId);
}
Copier après la connexion
Ensuite, nous devons créer un middleware de notification push pour gérer la logique d'envoi des notifications push. Le middleware suivant peut être créé dans le fichier src/Middleware/PushNotificationMiddleware.php :

rrreee

Enfin, nous devons enregistrer le middleware dans le fichier src/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.

🎜【Rappel de message】🎜En plus des notifications push, nous devons généralement également afficher des rappels de message dans l'application, comme faire apparaître une boîte de dialogue d'invite de message ou afficher le nombre de messages non lus sur la page. 🎜🎜Dans CakePHP, nous pouvons utiliser le composant Session pour stocker le nombre de messages non lus de l'utilisateur. Lorsque l'utilisateur reçoit la notification, nous augmentons le nombre de messages non lus de 1 et le stockons dans la session. Lorsqu'un utilisateur consulte un message, nous réinitialisons le nombre de messages non lus à zéro. 🎜🎜Pour faciliter l'utilisation, nous pouvons créer un composant de rappel de message. Vous pouvez créer le composant suivant dans le fichier 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

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.

CakePHP travaillant avec la base de données CakePHP travaillant avec la base de données Sep 10, 2024 pm 05:25 PM

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.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

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

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

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

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

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

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

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

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

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.

Quel est le principe du middleware Tomcat Quel est le principe du middleware Tomcat Dec 27, 2023 pm 04:40 PM

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.

See all articles