メッセージの受信

プッシュ通知の受信方法は、プッシュ通知の実現方法によって実装が異なります。ここでは、WebSocket 上の MQTT を使ってプッシュ通知を受け取る方法を示します。Cordova アプリでプッシュ通知を受け取る場合は、phonegap-plugin-push を参考に実装してください。

プッシュ通知は、外部ライブラリーを経由して、MQTT の PUBLISH コマンドを処理することで受信できます。PUBLISH コマンドのペイロードには、アプリケーションから指定した追加データを含む JSON 文字列が渡されます。

ペイロードに含まれるパラメーターの詳細は、Kii Cloud SDK for Android の KiiPushSubscription の情報を参考にしてください。

MQTT トピック

PUBLISH コマンドは様々な目的で受信するため、サーバー側からの PUBLISH コマンドを受け取った際には、必ず MQTT トピック名をチェックするように実装してください。また、未知の MQTT トピック名を持つ PUBLISH コマンドは、将来の拡張のため無視するように実装してください。

プッシュ通知で受け取る MQTT トピック名は、初期化の際に SUBSCRIBE コマンドで講読した MQTT トピックの名前です。チュートリアル の実装も参考にしてください。

プッシュメッセージの例

以下は、プッシュメッセージを受け取ったときのペイロードを整形した例です。ここでは、トピックへのカスタムフィールドとして mymessage = Hello を指定した場合を想定しています。

{
  "mymessage":"Hello",
  "sender":"727f20b00022-8d18-5e11-991f-06db2509",
  "sourceURI":"kiicloud://users/727f20b00022-8d18-5e11-991f-06db2509/topics/myTopic",
  "objectScopeType":"APP_AND_USER",
  "topic":"myTopic",
  "objectScopeAppID":"12345678",
  "senderURI":"kiicloud://users/727f20b00022-8d18-5e11-991f-06db2509",
  "when":1463363865798,
  "objectScopeUserID":"727f20b00022-8d18-5e11-991f-06db2509"
}

プッシュ通知のループに対する注意

プッシュ通知の設計や実装を行うときには、プッシュ通知のループが発生しないように十分に注意してください。プッシュ通知の受信処理で再びプッシュが発生する処理を行うと、永久ループから抜け出せなくなります。

ユーザープッシュ通知(Push to User)では、プッシュメッセージの受信処理を契機に、再びトピックへのメッセージ送信を行うと、プッシュ通知のループが発生する可能性があります。

万一、永久ループがリリースモジュールで発生してしまった場合、対処が非常に困難です。本質的には、すべてのエンドユーザーのモバイルアプリを対処済みバージョンに更新する必要があります。更新完了までは、開発者ポータルのプッシュ通知のキーや証明書を削除したり、ユーザーごとに REST API で購読を解除したりするなどの対処が必要になります。