メッセージの受信
プッシュ通知の受信方法は、プッシュ通知の実現方法によって実装が異なります。ここでは、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 で購読を解除したりするなどの対処が必要になります。