メッセージの送信

トピックの作成が完了したら、いよいよプッシュメッセージの送信です。トピックにメッセージを送信すると、このトピックを購読している全てのユーザーに対してメッセージがプッシュされます。

アプリケーションスコープのトピックへの送信

アプリケーションスコープのトピックにメッセージを送信するには、開発者ポータルからの送信方法と 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"
      }
    },
    "jpush": {
      "enabled": true
    },
    "mqtt": {
      "enabled": true
    }
  }'

送信の際、sendToDevelopmentsendToProduction で開発環境か配布環境に送信するかどうかを、gcm apns jpush mqtt の直下の enabled で各環境にプッシュ通知を送信するかどうかを指定します。

プッシュ通知サービス固有のフィールド

FCM や APNs などのプッシュ通知サービスに固有の設定を行うことができます。

プッシュ通知サービスに固有の設定は、上記の curl コマンドの gcmapns の配下に指定します。サービスごとに、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
    },
    "jpush" : {
      "enabled" : true
    },
    "mqtt" : {
      "enabled" : true
    }
  }'

アプリケーションスコープと同様に、送信の際、sendToDevelopmentsendToProductiongcmapnsjpushmqtt で送信対象の環境を指定します。

ユーザースコープのトピックには、このユーザーまたはトピックの所有者のみがメッセージを送信できます。以下に、メッセージ送信を行うコード例を挙げます。

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
    },
    "jpush" : {
      "enabled" : true
    },
    "mqtt" : {
      "enabled" : true
    }
  }'

いずれの例においても "data" フィールドに実際のプッシュ通知内容が指定されています。

この他、プッシュ通知内容制御(例:メッセージに追加情報を付与、メッセージ送信先の制御、各プッシュ通知ネットワークに特有のフィールドの設定)のための既定フィールドを指定できます。詳細については 詳細ドキュメント(英語) を参照してください。

Kii Cloud は以下の応答を返します。

  • メッセージ送信要求を正常に受け付けた場合は、201 応答を返します。
  • 指定したトピックが存在しない場合は、エラーコード TOPIC_NOT_FOUND を 404 応答で返します。

注意:FCM サービスは最大で 4 KB(4096 バイト)のペイロードをサポートします。一方、APNs のペイロード上限は 2 KB(2048 バイト)と限られているため、特に長いメッセージを送る際に問題となることがあります。このため、特に iOS 端末にプッシュ通知を送信する場合は、プッシュ通知に大量の情報を入れないようにしてください。プッシュ通知に含まれるデフォルトキーの送信を抑制して、使用可能なペイロードを増やすこともできます。詳しくは 詳細ドキュメント(英語) を参照してください。