APIによるモバイルプッシュの送信
NTT CPaaSは、モバイルプッシュ通知用メッセージを送信したり、そのメッセージに関する分析情報を取得したりできるようにする信頼性の高いAPIを提供しています。このAPIは、トランザクション、情報やプロモーション関連のユースケースに使用できます。
APIによるモバイルプッシュの送信
モバイルプッシュ通知用メッセージを1人以上の受信者に送信したい時は、Send Push notifications (プッシュ通知を送信 (opens in a new tab)メソッドを使用します。APIの構造は、どのチャネルにも対応できるように統一されていますので、アプリと容易に統合できます。モバイルプッシュ通知パラメーターを使用すると、特定のモバイルアプリケーションのユーザーまたはユーザーのセグメントをターゲットにすることができます。
以下のフィールドの構成を完了します。
Sender (送信者)
アプリケーションプロファイルの識別子です。NTT CPaaSのWebインターフェイスで作成した アプリケーションプロファイル のアプリケーションコードまたはアプリケーションIDを使用します。
Destination (送信先)
モバイルプッシュ通知用メッセージを単一の受信者に送信する場合は、次のいずれかのパラメータータイプを使用します:
- External user ID (外部ユーザーID)
- Email (メールアドレス)
- Phone number (電話番号)
- Registration (登録)
モバイルプッシュ通知用メッセージを複数の受信者に送信する場合は、Multiple (複数) を使用します。
詳しくは、このページの関連セクションをご参照ください。
パーソナライズされていないデバイスを持つ単一の受信者をターゲットにする場合
パーソナライズされていないデバイスとは、パーソナライズ化に必要な標準属性 (外部ユーザーID、メールアドレスまたは電話番号) のいずれにも関連付けられていないエンドユーザーのデバイスのことです。
パーソナライズされていないデバイスにモバイルプッシュ通知用メッセージを送信するには、次の操作を行います。
- 送信先のタイプ としてREGISTRATION (登録) を指定します。
- プッシュ通知登録IDを指定します。この値は、インストールするすべてのモバイルアプリケーションにデフォルトで使用できます。
コードサンプル
"destinations": [
{
"pushRegistrationId": "DBE0B0B6-668E-491E-8EE8-2A3DB2C71CBE",
"type": "REGISTRATION"
}
]
プッシュ通知登録ID
次の表に、プッシュ通知登録IDに関する情報を示します。
送信先パラメーター | Type | 説明 |
---|---|---|
pushRegistrationId | 文字列 | 特定のアプリケーションのインスタンスとデバイスの組み合わせを一意に識別するパラメーターです。 このパラメーターは、Mobile SDKで収集できます。 詳細については、次のいずれかの該当ドキュメントをご参照ください。 Android iOS Huawei Flutter React Native Cordova |
パーソナライズされたデバイスを持つ単一の受信者をターゲットにする場合
パーソナライズされたデバイスとは、パーソナライズされた標準属性 (外部ユーザーID、メールアドレスまたは電話番号) の1つ以上に紐づけられているエンドユーザーのデバイスのことです。
次のいずれかを送信先アドレスとして使用します。
送信先パラメーター | Type | 説明 |
---|---|---|
externalUserId | 文字列 | パーソンプロファイルで設定されている外部ユーザーIDのことです。 |
phoneNumber | 文字列 | 国際形式のMSISDNのことです。例:417930267 />/>/>この値は、People内のエンドユーザーのパーソンプロファイルのContact information (連絡先情報)タブで使用できます。 |
文字列 | エンドユーザーのメールアドレスのことです。 この値は、People 内のエンドユーザーのパーソンプロファイルの Contact information (連絡先情報) タブで使用できます。 |
これらは、デフォルトでは使用できないタイプのアドレスです。Mobile SDKまたはPeople APIで定義する必要があります。
- Android (opens in a new tab)
- iOS (opens in a new tab)
- Huawei (opens in a new tab)
- Flutter (opens in a new tab)
- React Native (opens in a new tab)
- Cordova (opens in a new tab)
- People API (opens in a new tab)
コードサンプル
"destinations": [
{
"externalUserId": "customer_21234",
"type": "EXTERNAL_USER_ID"
}
]
externalUserId、phoneNumberまたはemailを使用して複数のデバイスがパーソンプロファイルにリンクされている場合、プッシュ通知はデフォルトですべてのデバイスに配信されます。
プライマリーデバイスにのみプッシュ通知を送信したい時は、*<destinations>セクションで<targetOnlyPrimaryDevices>*というパラメーターを使用します。
OR演算子を使って複数の受信者をターゲットにする場合
モバイルプッシュ通知用メッセージを複数の受信者に送信するには、次の操作を行います。
- 送信先の タイプ として MULTIPLE (複数) を指定します。
- 送信先パラメーターに複数の値を指定するには、<OR>演算子を使用します。
コードサンプル
"destinations": [
{
"$or": [
{
"externalUserId": "customer_21234"
},
{
"externalUserId": "customer_21235"
}
],
"type": "MULTIPLE"
}
]
デバイス属性を使って複数の受信者をターゲットにする場合
デバイス属性に基づいて複数の受信者をターゲットにすることができます。
これらの送信先アドレスタイプは、デフォルトで有効になっています。
名前 | Type | 説明 |
---|---|---|
プラットホーム | 文字列 | 指定できる値はAndroidまたはiOSです。 |
sdkVersion | 文字列 | GitHubで確認できるSDKのバージョン情報です。 Android用Mobile SDKのリリース iOS用Mobile SDKのリリース Huawei用Mobile SDKのリリース プラグイン用リリース: Flutter React Native Cordova |
osVersion | 文字列 | オペレーティングシステムのバージョン情報です。 |
deviceManufacturer | 文字列 | デバイスの製造元情報です。 iOSの場合はApple 、Androidの場合はSamsung、Asusなどです。 インストールしている特定のデバイスの値を確認したい場合は、People 内のパーソンプロファイルのContact information (連絡先情報)タブ>Mobile Application (モバイルアプリケーション)セクションをご参照ください。 |
deviceModel | 文字列 | デバイスの機種情報です。例:iPhone 6、iPhone 5s (GSM+CDMA)、LG-D855など。iOSモデルの詳細については、iOS機種一覧 (opens in a new tab) をご参照ください。 インストールしている特定のデバイスの値を確認したい場合は、People 内のパーソンプロファイルのContact information (連絡先情報)タブ>Mobile Application (モバイルアプリケーション)セクションをご参照ください。 |
applicationVersion | 文字列 | アプリケーションのバージョン情報です。 |
osLanguage | 文字列 | モバイルデバイスで設定されている言語です。このパラメーターは、アプリケーションロジックで上書きできます。 |
deviceSecure | ブール値 | デバイスに設定されている生体認証またはパスコードのことです。 |
notificationsEnabled | ブール値 | エンドユーザーがモバイルアプリケーションの通知を有効にしたデバイスのみをターゲットにしたい場合は、 true に設定します。 |
次の送信先アドレスの種類は、デフォルトでは使用できません。Mobile SDK で定義する必要があります。
名前 | Type | 説明 |
---|---|---|
{custom field} | 文字列 | インストール関連のカスタム属性パラメーターのどのフィールドにも適用します。 カスタム属性の実装方法に関する詳細については、下記のいずれかの該当ドキュメントをご参照ください。. Android用SDK iOS用SDK Huawei 用SDK Flutter用プラグイン React Native用プラグイン Cordova |
モバイルプッシュ通知用メッセージを複数の受信者に送信するには、次の操作を行います。
- 送信先の タイプ として MULTIPLE (複数) を指定します。
- 送信先パラメーターに複数の値を指定したい場合は、<and>演算子と <or>演算子を使用します。
次の例では、すべてのiOSデバイスをターゲットにしています。
コードサンプル
"destinations": [
{
"$or": [
{
"platform": "iOS"
}
],
"type": "MULTIPLE"
}
]
高度なターゲティング
必要なユーザーセグメントを作成し、そのセグメントにモバイルプッシュ通知用メッセージを送信するには、次の操作を行います。
- 送信先の タイプ として MULTIPLE (複数) を指定します。
- <and>演算子と <or> 演算子を使用します。
例1
この例では、特定の電話番号に紐づけられている受信者が持っているすべての iOS デバイスがターゲットになります。
コードサンプル
"destinations": [
{
"$and": [
{
"platform": "iOS"
},
{
"phoneNumber": "441134960001"
}
],
"type": "MULTIPLE"
}
]
例2
この例では、以下の基準を両方とも満たす受信者のみがターゲットになります。
- カスタムデバイス属性である*Device type (デバイスタイプ)がPersonal (個人用)またはBusiness (業務用)*のどちらかであること。
- ターゲットにするデバイスが iOSであること。
コードサンプル
"destinations": [
{
"$and": [
{
"platform": "iOS"
},
{
"DeviceType": "personal"
}
],
"$or": [
{
"DeviceType": "business"
}
],
"type": "MULTIPLE"
}
]
アプリケーション内でのプッシュ通知のミラーリング
Send push API (プッシュ通知送信用API) を使用すると、以下のシナリオでアプリケーション内に通知を表示できるようになります。
- プッシュ通知を表示するだけでなく、アプリ内でも通知を表示できるようにしたい場合。 例: アプリケーションを使用しているが、プッシュ通知を表示できないエンドユーザーに対してトランザクション情報をサポートする場合。
- プッシュ通知を表示せずに、アプリケーション内でのみ通知を表示できるようにしたい場合。このシナリオでは、通知は通知センターに表示されません。このオプションを使用するには、Silent (サイレント) をプッシュ通知タイプとして選択して有効にします。
メッセージ形式
アプリケーション内で通知を表示したい場合、以下の形式で表示できます:
- Modal (モーダル):この表示形式を選択すると、通知が画面の一部に重なるようにポップアップとして表示されます。モーダルポップアップ形式は通常、エンドユーザーの注意を十分に引いて、何かを行うように促したい時に選択します。
- Banner (バナー):この表示形式を選択すると、通知がモバイルアプリのコンテンツ上に小さな通知として一時的に表示されます。バナーとして表示される通知は、モバイルデバイスの画面の上部または下部に表示され、数秒後に自動的に閉じます。バナー形式は通常、アプリを操作中のエンドユーザーに、その操作を中断させることなく、何かを知らせる必要がある時に選択します。
SDKの対応バージョン
アプリ内でメッセージを表示できるSDKバージョンは、以下の通りです。
SDK | モーダルポップアップ対応バージョン | バナー対応バージョン |
---|---|---|
Android用SDK | 1.13.0以降 | 2.0.0以降 |
iOS用SDK | 3.6.0以降 | 5.0.0以降 |
Huawei用SDK | 1.0.0以降 | 1.0.0以降 |
Flutter | 全バージョン | 全バージョン |
React Native | 全バージョン | 全バージョン |
Cordova用プラグイン | 0.7.0以降 | 1.0.0以降 |
通知パラメーター
アプリ内で通知を送信するには、notificationOptionsに以下のパラメーターを追加します。
パラメーター | 説明 |
---|---|
showMirroredPush | アプリ内でメッセージを表示できるようにします。 |
mirroredPushStyle | 通知をアプリケーション内でバナー形式で表示するか、モーダルポップアップ形式で表示するかを定義します。 |
mirroredPushExpirationPeriod | フローがアプリ内で通知を配信する最大期間を指定します。 |
mirroredPushExpirationTimeUnit | アプリ内に通知を表示する有効期限の時間単位を設定します。分または時間を選択します。 |
ボタン:mirroredPushStyle が MODAL (モーダル) に設定されている場合は、ボタンを定義することもできます。 | |
mirroredPushDismissTitle | Dismiss (無視) ボタンのテキストを指定します。 |
mirroredPushOpenTitle | Open (開く) ボタンのテキストを指定します。 |
onTapButtonAction | エンドユーザーがアプリ内の通知の [プライマリー]ボタンをタップした時に実行するアクションを指定します。 |
APIによる統計データの取得
一括で送信されたプッシュ通知用メッセージの統計データを取得するには、 一括プッシュ通知用メッセージ統計メソッド (opens in a new tab)を使用します。
一括送信リクエストに含まれている各メッセージに関する詳細な配信レポートを取得する方法を詳しく知りたい時は、NTT CPaaS API開発者ハブで入手できる プッシュ通知用メッセージの送信レポート (opens in a new tab) について詳述しているドキュメントをご参照ください。
クエリパラメーター
パラメーター | Type | 説明 |
---|---|---|
bulkId | 文字列 | 送信リクエストを一意に識別するIDです。 |
応答形式
パラメーター | Type | 説明 |
---|---|---|
totalSent | 整数 | 送信されたメッセージの合計数を示します。 |
delivered | 整数 | 配信されたメッセージの合計数を示します。 |
seen | 整数 | 既読されたメッセージの合計数を示します。 |
エラー | error | ユーザーに配信されなかったメッセージを示します。 |
delivery | delivery | メッセージの一括送信に関する配信情報が得られます。 |
エラー
パラメーター | Type | 説明 |
---|---|---|
registration | 整数 | ユーザーがアプリをアンインストールしたために登録無効のエラーが発生したことにより、配信されなかったメッセージを示します。 |
expired | 整数 | 有効期間が切れたために配信されなかったメッセージのことです。特定のプッシュ通知用アプリケーションで通知を無効にしたユーザー数を示します。 |
cloud | 整数 | APNSまたはFCMクラウドのエラーが原因で配信されなかったメッセージを示します。クラウドサービスの一時的なエラーが原因で発生します。 |
配信
パラメーター | Type | 説明 |
---|---|---|
率 | 倍 | 配信率のことです。この配信率は、特定の一括送信プロセスで配信されたメッセージの合計数と送信されたメッセージの合計数の比率で算出します。 |
OMNI APIによるプッシュ通知の送信
OMNI APIは、定義された順序に従って別のチャネルへの自動フォールバックを有効にします。
OMNI APIを使用してプッシュ通知を送信するには、以下の操作を行う必要があります:
- OMNIシナリオの作成
- OMNIシナリオに基づくメッセージの送信
- 配信レポートの取得 (任意)
OMNIシナリオの作成
OMNIシナリオを作成するには、順番に実行するOMNIステップを定義する必要があります。
シナリオに基づいてプッシュ通知を送信するには、モバイルアプリケーションのセットアップ中に生成された送信者 ("from": "APPLICATION CODE")
としてプッシュ通知("channel": "PUSH")
とAPPLICATION CODEを使用する必要があります。
OMNIシナリオの作成方法について詳しく知りたい時は、NTT CPaaS ドキュメントハブで入手できるモバイルアプリケーションプロファイルの作成 と題した記事をご参照ください。 また、NTT CPaaS API開発者ハブでは、OMNIシナリオの作成方法 (opens in a new tab)ついて詳述しているドキュメントもご参照いただけます。
最も一般的なOMNIシナリオは、SMSをフォールバックチャネルとして使用したプッシュ通知を送信するシナリオです。このようなシナリオを作成する方法については、下記のコードスニペットをご参照ください。
{
"name" : "push + SMS scenario",
"flow": [
{
"from": "APPLICATION CODE",
"channel": "PUSH"
},
{
"from": "YOUR_REGISTERED_SMS_SENDER",
"channel": "SMS"
}
],
"default": true
}
OMNIシナリオに基づくメッセージの送信
OMNIシナリオ (key
パラメーターで識別) を作成したら、定義された通信チャネルを介してOMNIメッセージを送信できるようになります。
NTT CPaaSのWebインターフェイス上でプッシュ通知用メッセージを送信できるようにするには、プラットフォームに少なくともモバイルアプリケーションのプロファイルが1つ登録されている必要があります。詳細な手順については、モバイルアプリケーションプロファイルの作成 と題したドキュメントをご参照ください。
1つまたは複数のメッセージを異なるチャネルに送信する場合は、 高度なOMNIメッセージ送信メソッド (opens in a new tab)を使用する必要があります。
受信したプッシュ通知は、様々なオプションを使って処理できます。
名前 | 必須 | デフォルト値 | Type | 説明 |
---|---|---|---|---|
vibrationEnabled | 不可 | true | ブール値 | 通知を届いた時にデバイスを振動させます (Androidのみ対応)。 |
soundEnabled | 不可 | true | ブール値 | デバイスに通知が届いた時に、そのことを音で知らせます。 |
soundName | 不可 | - | 文字列 | デバイスに通知が届いた時に再生されるカスタムサウンドに付ける名前のことです。通知音ファイルはアプリ内にある必要があります。再生時間は最大30秒です。ファイルの拡張子は、iOSでは必須ですが、Androidでは任意です。カスタムサウンド (例:notification_sound.wav) は、 soundEnabled がfalseに設定されていると再生されない可能性があります 。詳細については、AndroidまたはiOSでの使用法をそれぞれご確認ください。 |
badge | 不可 | 整数 | バッジカウンターのことです (iOSのみ対応)。 | |
contentUrl | 不可 | 文字列 | 通知に表示される画像のURLのことです。リッチプッシュ通知は、iOS 10またはAndroid 4.1.+ を搭載したデバイスで使用できます。同機能をサポートしているMobile SDKのバージョンは、iOSの場合は2.5.8以降で、Androidの場合は1.6.4以降です 。 | |
category | 不可 | 文字列 | アクション可能な通知のカテゴリーIDのことです。同機能をサポートしているMobile SDKのバージョンは、Androidの場合は 1.6.16 以降で、iOSの場合は 2.6.9 以降です 。事前定義されたカテゴリーID:mm_accept_decline - Accept (承認)とDecline (拒否) ボタンのアクション。 | |
inAppStyle | 不可 | 文字列 | 設定可能な値は、MODAL または BANNER です。ユーザーにアプリケーションで行動を促す対話形式のメッセージを送信する場合は、 MODAL に設定します。標準のバナー形式でメッセージを表示する場合は、 BANNER に設定します。 MODAL は、iOS 3.6.0 以降、Android 1.13.0 以降、Cordova 0.7.0 以降、React Native 1.0.0 以降でサポートされています。 BANNER は、iOS 5.0.0以降、Android 2.0.0以降、Cordova 1.0.0以降、React Native 1.0.0 以降でサポートされています。 | |
isSilent | 不可 | ブール値 | プッシュ通知用メッセージをサイレントモードで送信するには、 true に設定します。サイレントモードで送信するメッセージは、デバイスのロック画面と通知センターには表示されません。サイレントメッセージを使用すると、モバイルアプリケーションにカスタムデータを配信したり、アプリ内に通知を表示したりできます。 | |
title | 不可 | モバイルプロジェクト内で設定されたアプリケーション名のことです。 | 文字列 | 通知の件名です。この件名はエンドユーザーに表示されます。iOS 10+またはAndroid 4.1+が必要です。(Androidについては、カスタムファームウェアに依存する場合があります。) |
webViewUrl | 不可 | 文字列 | モバイルアプリケーション内で外部ウェブページを開くためのURL (ウェブビュー) のことです。 | |
inboxTopic | 不可 | 文字列 | メッセージを受信トレイに保存するための大文字と小文字を区別するトピック名のことです。指定したアカウントのトピック名が存在しない場合、メッセージの送信は拒否されます。 |
このコードスニペットは、OMNI APIでオプションを使用してプッシュ通知を送信する方法を示しています。
{
"scenarioKey": "key",
"destinations": [
{
"to": {
"phoneNumber": "phone number"
}
}
],
"push": {
"text": "This PUSH message will pop up on your mobile device.",
"customPayload": {
"contentUrl": "https://someurl.com/content",
"deepLink": "myApp://some/link"
},
"notificationOptions": {
"vibrationEnabled": true,
"soundEnabled": true,
"soundName": "sound.wav",
"badge": 1,
"contentUrl": "http://www.mydomain.com/images/image1.jpg",
"category": "mm_accept_decline",
"inAppStyle": "MODAL",
"title": "This is some title"
},
"targetOnlyPrimaryDevices": true,
"includeNotificationsDisabledDevices": true
},
"sms": {
"text": "This is the SMS failover message"
}
}
配信レポートの取得
OMNIレポート (opens in a new tab)メソッドを使用すると、送信したメッセージのステータスを確認したり、配信レポートを取得したりできます。