プッシュ通知の利用

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 スコープのトピック MyTODODoneItem という 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
}