メッセージの受信

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

プッシュ通知は、外部ライブラリーを経由して、MQTT の PUBLISH コマンドを処理することで受信できます。PUBLISH コマンドのペイロードには、発生した Bucket の変更の詳細情報を含む JSON 文字列が渡されます。

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

MQTT トピック

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

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

プッシュメッセージの例

以下は、プッシュメッセージを受け取ったときのペイロードを整形した例です。Push to App では、更新があった Bucket や Object、その更新の種類(追加された、削除されたなど)のような情報を取得できます。

{
  "modifiedAt":1463364001875,
  "origin":"EVENT",
  "objectScopeType":
  "APP_AND_USER",
  "bucketID":"myBucket",
  "type":"DATA_OBJECT_CREATED",
  "when":1463364001908,
  "bucketType":"rw",
  "sender":"727f20b00022-8d18-5e11-991f-06db2509",
  "sourceURI":"kiicloud://users/727f20b00022-8d18-5e11-991f-06db2509/buckets/myBucket/objects/e697ea30-1b09-11e6-ab1e-22000b02f727",
  "appID":"12345678",
  "objectScopeAppID":"12345678",
  "objectScopeUserID":"727f20b00022-8d18-5e11-991f-06db2509",
  "objectID":"e697ea30-1b09-11e6-ab1e-22000b02f727"
}

Push to App では、プッシュメッセージの内容をカスタマイズできません。回避方法については メッセージのカスタマイズ をご覧ください。

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

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

サーバー上変更のプッシュ通知(Push to App)では、プッシュメッセージの受信処理を契機に、再び Bucket の更新を行うと、プッシュ通知のループが発生する可能性があります。

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