ホームページ バックエンド開発 PHPチュートリアル CakePHP ミドルウェア: プッシュ通知とメッセージ リマインダーを統合して、リアルタイム通知を実現します

CakePHP ミドルウェア: プッシュ通知とメッセージ リマインダーを統合して、リアルタイム通知を実現します

Jul 29, 2023 pm 04:33 PM
ミドルウェア リアルタイム通知 cakephp

CakePHP ミドルウェア: プッシュ通知とメッセージ リマインダーを統合してリアルタイム通知を実現

[はじめに]
現代のインターネット アプリケーションでは、リアルタイム通知は非常に重要な機能です。リアルタイムの通知を実現するために、通常はプッシュ通知とメッセージリマインダーを使用します。この記事では、CakePHP アプリケーションにプッシュ通知とメッセージリマインダーを統合して、リアルタイム通知機能を実現する方法を紹介します。

[プッシュ通知]
プッシュ通知は主に、新しいメッセージや注文ステータスの更新など、重要なリアルタイム情報をユーザーに送信するために使用されます。 CakePHP では、Firebase Cloud Messaging (FCM) や Aurora Push などのサードパーティのプッシュ サービスを使用して、プッシュ通知を送信できます。

まず、CakePHP アプリケーションでプッシュ サービス キーとその他の必要なパラメーターを設定する必要があります。 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 つ増やしてセッションに保存します。ユーザーがメッセージを表示すると、未読メッセージ数がゼロにリセットされます。

使いやすくするために、メッセージ リマインダー コンポーネントを作成できます。次のコンポーネントは

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);
}
ログイン後にコピー
この時点で、プッシュ通知とメッセージ リマインダーを正常に統合して、リアルタイム通知機能を実装しました。 。ユーザーは重要なリアルタイム情報をタイムリーに受け取り、アプリ内で未読メッセージを表示および管理できるようになります。

[概要]

この記事では、CakePHP アプリケーションにプッシュ通知とメッセージリマインダーを統合して、リアルタイム通知機能を実現する方法を紹介します。サードパーティのプッシュ サービスを統合し、セッション コンポーネントを使用することで、アプリケーションにユーザーへのリアルタイム通知とメッセージ リマインダーを簡単に実装できます。これは最新のインターネット アプリケーションにとって非常に重要な機能であり、ユーザー エクスペリエンスを向上させ、ユーザーの定着率を高めることができます。この記事が皆さんのお役に立てば幸いです!

以上がCakePHP ミドルウェア: プッシュ通知とメッセージ リマインダーを統合して、リアルタイム通知を実現しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

Tomcatミドルウェアの原理は何ですか Tomcatミドルウェアの原理は何ですか Dec 27, 2023 pm 04:40 PM

Tomcat ミドルウェアの原理は、Java Servlet および Java EE 仕様に基づいて実装されています。 Tomcat はサーブレット コンテナとして、HTTP リクエストとレスポンスを処理し、Web アプリケーションに実行環境を提供する役割を果たします。 Tomcat ミドルウェアの原理には主に次のものが含まれます: 1. コンテナ モデル; 2. コンポーネント アーキテクチャ; 3. サーブレット処理メカニズム; 4. イベント リスニングとフィルター; 5. 構成管理; 6. セキュリティ; 7. クラスタリングとロード バランシング; 8. コネクタテクノロジー; 9. エンベデッドモードなど

See all articles