サーバー上変更のプッシュ通知(Push to App)
サーバー上変更のプッシュ通知(Push to App)は、購読中の Bucket の変更をプッシュ通知として受け取る機能です。機能概要については、サーバー上変更のプッシュ通知(Push to App) をご覧ください。
Bucket の購読
Bucket を購読して監視を開始する例を以下に挙げます。監視を開始すると、以後この Bucket 内の Object に変更が発生する度に、プッシュ通知がアプリに送信されます。
int ret;
/* Set bucket parameters. */
kii_bucket_t bucket;
memset(&bucket, 0x00, sizeof(kii_bucket_t));
bucket.scope = KII_SCOPE_THING;
bucket.bucket_name = "myBucket";
bucket.scope_id = "VENDOR_THING_ID:rBnvSPOXBDF9r29GJeGS";
/* Subscribe to the bucket. */
ret = kii_push_subscribe_bucket(&kii, &bucket);
if (ret != 0) {
/* Handle the error. */
return;
}
講読対象の Bucket は、kii_bucket_t
構造体で指定します。指定方法は、Object の作成 をご覧ください。講読できる Bucket は、Thing スコープと Application Scope のみです。
オーナーのデータが変更されたことを知りたい場合は、ユーザープッシュ通知(Push to User) を使用してください。Bucket を操作した後、プッシュメッセージをトピック経由で送信するように実装します。
Bucket の講読解除
Bucket の購読を解除する例を以下に挙げます。購読を解除すると、以降この Bucket 内の Object に変更が発生しても、プッシュ通知は届かなくなります。
int ret;
/* Set bucket parameters. */
kii_bucket_t bucket;
memset(&bucket, 0x00, sizeof(kii_bucket_t));
bucket.scope = KII_SCOPE_THING;
bucket.bucket_name = "myBucket";
bucket.scope_id = "VENDOR_THING_ID:rBnvSPOXBDF9r29GJeGS";
/* Unsubscribe from the bucket. */
ret = kii_push_unsubscribe_bucket(&kii, &bucket);
if (ret != 0) {
/* Handle the error. */
return;
}
サーバー上の変更をプッシュ通知として受け取る
プッシュ通知を受け取るには、プッシュ通知の受信ハンドラーを設定します。実装方法は、受信ハンドラーの実装 をご覧ください。
プッシュメッセージの例
以下は、Push to App のプッシュ通知を受け取ったとき、受信できるデータのイメージです。Push to App では、更新があった Bucket や Object、その更新の種類(追加された、削除されたなど)のような情報を、ハンドラーの引数として取得できます。
これらのデータの詳細は、Kii Cloud SDK for Android の Javadoc を参考にしてください。
{
"appID": "11111111",
"bucketID": "myBucket",
"bucketType": "rw",
"modifiedAt": 1470109920976,
"objectID": "77b5dd00-5864-11e6-935b-22000aad0899",
"objectScopeAppID": "11111111",
"objectScopeThingID": "th.727f20b00022-e1ba-6e11-18c2-0af88aeb",
"objectScopeType": "APP_AND_THING",
"origin": "EVENT",
"sourceURI": "kiicloud://things/th.727f20b00022-e1ba-6e11-18c2-0af88aeb/buckets/myBucket/objects/77b5dd00-5864-11e6-935b-22000aad0899",
"type": "DATA_OBJECT_CREATED",
"when": 1470109921000
}
Push to App では、プッシュメッセージの内容をカスタマイズできません。回避方法は こちら をご覧ください。