メッセージの送信
トピックの作成が完了したら、いよいよプッシュメッセージの送信です。トピックにメッセージを送信すると、このトピックを購読している全てのユーザーに対してメッセージがプッシュされます。
アプリケーションスコープのトピックへの送信
アプリケーションスコープのトピックにメッセージを送信するには、開発者ポータルからの送信方法と REST API による方法の 2 通りがあります。いずれもアプリ開発者(管理者)のみが実行できます。
開発者ポータルからの送信
開発者ポータルの UI を使ってメッセージが送信できます。
送信方法は ユーザープッシュ通知の送信 をご覧ください。
REST API からの送信
REST API を使ってアプリケーションスコープのトピックにメッセージを送信するには、アプリ管理者のアクセストークンが必要です。アプリ管理者トークンの取得方法は こちら をご参照ください。
以下に、メッセージ送信を行うコード例を挙げます。
curl -v -X POST \
-H "Authorization: Bearer {APP_ADMIN_TOKEN}" \
-H "Content-Type: application/vnd.kii.SendPushMessageRequest+json" \
-H "Accept: application/vnd.kii.SendPushMessageResponse+json" \
"https://api-jp.kii.com/api/apps/{APP_ID}/topics/{TOPIC_NAME}/push/messages" \
-d '{
"data": {
"MsgBody": "Hi all!",
"Urgent": false
},
"sendToDevelopment": true,
"sendToProduction": true,
"gcm": {
"enabled": true
},
"apns": {
"enabled": true,
"alert": {
"body": "Hello"
}
},
"mqtt": {
"enabled": true
}
}'
送信の際、sendToDevelopment
と sendToProduction
で開発環境か配布環境に送信するかどうかを、gcm
apns
mqtt
の直下の enabled
で各環境にプッシュ通知を送信するかどうかを指定します。
プッシュ通知サービス固有のフィールド
FCM や APNs などのプッシュ通知サービスに固有の設定を行うことができます。
プッシュ通知サービスに固有の設定は、上記の curl
コマンドの gcm
や apns
の配下に指定します。サービスごとに、REST API Overview に記述されているパラメーターを指定できます。
以下は、APNs で サイレント通知 を送信するため、content-available
を設定する例です。
-d '{
......
"apns": {
"enabled": true,
"contentAvailable": true
},
......
}'
以下は、APNs でリッチ通知を使用するため、mutable-content
を設定する例です。この例では、タイトル、サブタイトル、本文、カテゴリーも同時に設定しています。
-d '{
......
"apns": {
"enabled": true,
"alert": {
"title": "New message",
"subtitle": "Message from Alice",
"body": "It's been a while..."
},
"mutableContent": true,
"category": "MESSAGE_CATEGORY"
},
......
}'
グループスコープ/ユーザースコープのトピックへの送信
グループスコープのトピックまたはユーザースコープのトピックには、REST API でメッセージを送信できます。
メッセージの送信
グループスコープのトピックには、任意のグループメンバーがメッセージを送ることができます。以下に、メッセージ送信を行うコード例を挙げます。
curl -v -X POST \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/vnd.kii.SendPushMessageRequest+json" \
-H "Accept: application/vnd.kii.SendPushMessageResponse+json" \
"https://api-jp.kii.com/api/apps/{APP_ID}/groups/{GROUP_ID}/topics/{TOPIC_NAME}/push/messages" \
-d '{
"data" : {
"MsgBody" : "Hi all!",
"Urgent" : false
},
"sendToDevelopment" : true,
"sendToProduction" : true,
"gcm" : {
"enabled" : true
},
"apns" : {
"enabled" : true
},
"mqtt" : {
"enabled" : true
}
}'
アプリケーションスコープと同様に、送信の際、sendToDevelopment
、 sendToProduction
、 gcm
、 apns
、 mqtt
で送信対象の環境を指定します。
ユーザースコープのトピックには、このユーザーまたはトピックの所有者のみがメッセージを送信できます。以下に、メッセージ送信を行うコード例を挙げます。
curl -v -X POST \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/vnd.kii.SendPushMessageRequest+json" \
-H "Accept: application/vnd.kii.SendPushMessageResponse+json" \
"https://api-jp.kii.com/api/apps/{APP_ID}/users/{USER_ID}/topics/{TOPIC_NAME}/push/messages" \
-d '{
"data" : {
"Item" : "Do something",
"Done" : 0
},
"sendToDevelopment": true,
"sendToProduction": true,
"gcm" : {
"enabled" : true
},
"apns" : {
"enabled" : true
},
"mqtt" : {
"enabled" : true
}
}'
いずれの例においても "data" フィールドに実際のプッシュ通知内容が指定されています。
この他、プッシュ通知内容制御(例:メッセージに追加情報を付与、メッセージ送信先の制御、各プッシュ通知ネットワークに特有のフィールドの設定)のための既定フィールドを指定できます。詳細については 詳細ドキュメント(英語) を参照してください。
Kii Cloud は以下の応答を返します。
- メッセージ送信要求を正常に受け付けた場合は、201 応答を返します。
- 指定したトピックが存在しない場合は、エラーコード
TOPIC_NOT_FOUND
を 404 応答で返します。
注意:FCM サービスは最大で 4 KB(4096 バイト)のペイロードをサポートします。一方、APNs のペイロード上限は 2 KB(2048 バイト)と限られているため、特に長いメッセージを送る際に問題となることがあります。このため、特に iOS 端末にプッシュ通知を送信する場合は、プッシュ通知に大量の情報を入れないようにしてください。プッシュ通知に含まれるデフォルトキーの送信を抑制して、使用可能なペイロードを増やすこともできます。詳しくは 詳細ドキュメント(英語) を参照してください。