プッシュ通知の利用
Kii Cloud は 3 種類のプッシュ通知をサポートしています。この内、Thing で利用できるのは サーバー上変更のプッシュ通知(Push to App) と ユーザープッシュ通知 (Push to User) の 2 つです。
プッシュ通知の機能
サーバー上変更のプッシュ通知(Push to App)
アプリケーション、グループ、ユーザーのスコープと同様に、サーバー上変更のプッシュ通知(Push to App)通知を利用できます。詳しくは サーバー上変更のプッシュ通知 を参照してください。
この際、対象となる Thing スコープの Bucket を正しく指定する点に注意してください。一例として、Thing スコープの Bucket を購読する場合に使用するリソース URL は次のようになります。
- https://api-jp.kii.com/api/apps/{APP_ID}/things/{Thing_ID}/buckets/{BUCKET_ID}/
filters/all/push/subscriptions/things/{THING_ID}
ユーザープッシュ通知(Push to User)
アプリケーション、グループ、ユーザーのスコープと同様に、ユーザープッシュ通知(Push to User)通知を利用できます。詳しくは ユーザープッシュ通知 (Push to User) を参照してください。
この際、対象となる Thing スコープのトピックを正しく指定する点に注意してください。一例として、Thing スコープのトピックを購読する場合に使用するリソース URL は次のようになります。
- https://api-jp.kii.com/api/apps/{APP_ID}/things/{Thing_ID}/topics/{TOPIC_NAME}/
push/subscriptions/things/{THING_ID}
プッシュ通知の詳細情報
MQTT の PUBLISH コマンドによって Kii Cloud からのメッセージを受け取ると、そのペイロードにはプッシュ通知の詳細情報が JSON 形式で入っています(現状の最大サイズは 4096 バイトです)。
ペイロードの詳細情報は、Android SDK の [KiiUser currentUser].pushSubscription を参考に解析できます。JSON の 1 階層目のキーが Javadoc に記載されているフィールドに対応します。
PUBLISH コマンドは様々な目的で受信するため、サーバー側から PUBLISH コマンドを受け取った際には、必ず MQTT トピック名をチェックするように実装してください。プッシュ通知で受信する MQTT トピック名は、SUBSCRIBE コマンドの実行時に指定したもの(MQTT エンドポイントの取得 の "mqttTopic")です。また、未知の MQTT トピック名を持つ PUBLISH コマンドは、将来の拡張のため無視するように実装してください。
以下に例を挙げます(実際のメッセージは改行等で整形されていない連続データです)。
サーバー上変更のプッシュ通知(Push to App)
次のメッセージは、Thing スコープの Bucket にオブジェクトを追加した場合の例です。
{
"appID": "11112222",
"bucketID": "myBucket",
"bucketType": "rw",
"modifiedAt": 1424942605290,
"objectID": "1da424a0-bd99-11e4-838f-22000a78437b",
"objectScopeAppID": "11112222",
"objectScopeThingID": "th.dfa848a00022-faea-4e11-97db-0b63263f",
"objectScopeType": "APP_AND_THING",
"origin": "EVENT",
"sender": "th.dfa848a00022-faea-4e11-97db-0b63263f",
"type": "DATA_OBJECT_CREATED",
"when": 1424942605309
}
ユーザープッシュ通知(Push to User)
次のメッセージは、Thing スコープのトピック MyTODO
に Done
、Item
という 2 つの値を持つメッセージを送信した場合の例です。
{
"Done": "0",
"Item": "Do something",
"objectScopeAppID": "11112222",
"objectScopeThingID": "th.dfa848a00022-faea-4e11-97db-0b63263f",
"objectScopeType": "APP_AND_THING",
"sender": "th.dfa848a00022-faea-4e11-97db-0b63263f",
"topic": "MyTODO",
"when": 1424943553656
}