通知の送信
improve this page | report issue概説
プッシュ通知または SMS 通知を iOS、Android、または Windows デバイスに送信するためには、まず、FCM 詳細 (Android)、APNS 証明書 (iOS)、または WNS 資格情報 (Windows 8.1 Universal/Windows 10 UWP) を使用して MobileFirst Server を構成する必要があります。 その後、すべてのデバイスに通知を送信したり (ブロードキャスト)、特定のタグに登録しているデバイス、単一デバイス ID、ユーザー ID、iOS デバイスのみ、Android デバイスのみ、または Windows デバイスのみに通知を送信したり、あるいは認証ユーザーに基づいて通知を送信したりできます。
前提条件: 必ず、通知の概要チュートリアルをお読みください。
ジャンプ先:
通知のセットアップ
通知サポートの有効化では、MobileFirst Server とクライアント・アプリケーションの両方でいくつかの構成ステップが必要になります。
この後のサーバー・サイドのセットアップを続けてお読みになるか、クライアント・サイドのセットアップにお進みください。
サーバー・サイドで必要なセットアップには、必要なベンダー (APNS、FCM、または WNS) の構成と push.mobileclient スコープのマッピングがあります。
Firebase Cloud Messaging
注: Google は GCM を非推奨とし、Cloud Messaging を Firebase に統合しました。 GCM プロジェクトを使用する場合は、必ず Android 上の GCM クライアント・アプリケーションを FCM にマイグレーションしてください。
Android デバイスは、プッシュ通知に Firebase Cloud Messaging (FCM) サービスを使用します。
FCM をセットアップするには、次のようにします。
- Firebase コンソールにアクセスします。
- 新規プロジェクトを作成し、プロジェクトに名前を付けます。
- 設定 (歯車) アイコンをクリックし、「プロジェクトの設定」を選択します。
- 「クラウド メッセージング」タブをクリックして、「サーバー API キー」と「送信者 ID」を生成し、「保存」をクリックします。
MobileFirst プッシュ・サービス用 REST API または MobileFirst 管理サービス用 REST API のいずれかを使用して FCM をセットアップすることもできます。
注
お客様の組織にインターネットとの間のトラフィックを制限するファイアウォールが存在する場合は、以下のステップを実行する必要があります。
- FCM クライアント・アプリケーションがメッセージを受信するために FCM との接続を許可するようにファイアウォールを構成します。
- 開くポートは 5228、5229、および 5230 です。 FCM は通常は 5228 のみを使用しますが、場合によっては 5229 および 5230 を使用することもあります。
- FCM は特定の IP を提供しないため、Google の ASN 15169 にリストされた IP ブロックに含まれるすべての IP アドレスへの発信接続をファイアウォールが受け入れられるようにする必要があります。
- ファイアウォールが MobileFirst Server から fcm.googleapis.com への発信接続をポート 443 で受け入れるようにします。
Apple Push Notifications Service
iOS デバイスは、プッシュ通知に Apple Push Notification Service (APNS) を使用します。
APNS をセットアップするには、次のようにします。
- 開発や実動のためのプッシュ通知証明書を生成します。 詳細な手順については、こちらの
「iOS の場合」
セクションを参照してください。 - MobileFirst Operations Console →「 [ご使用のアプリケーション] 」→「プッシュ」→「プッシュ設定」で、証明書タイプを選択し、証明書のファイルとパスワードを指定します。 次に、「保存」をクリックします。
注
- プッシュ通知を送信するには、MobileFirst Server インスタンスから以下のサーバーにアクセス可能でなければなりません。
- Sandbox サーバー:
- gateway.sandbox.push.apple.com:2195
- feedback.sandbox.push.apple.com:2196
- 実動サーバー:
- gateway.push.apple.com:2195
- Feedback.push.apple.com:2196
- 1-courier.push.apple.com 5223
- Sandbox サーバー:
- 開発フェーズでは、apns-certificate-sandbox.p12 サンドボックス証明書ファイルを使用します。
- 実動フェーズでは、apns-certificate-production.p12 実動証明書ファイルを使用します。
- APNS 実動証明書は、その証明書を使用するアプリケーションが Apple App Store に正常に送信された後、はじめてテストできるようになります。
注: MobileFirst は Universal 証明書をサポートしていません。
MobileFirst プッシュ・サービス用 REST API または MobileFirst 管理サービス用 REST API のいずれかを使用して APNS をセットアップすることもできます。
Windows Push Notifications Service
Windows デバイスは、プッシュ通知に Windows Push Notifications Service (WNS) を使用します。
WNS をセットアップするには、次のようにします。
- Microsoft が提供する指示に従って、「パッケージ セキュリティ ID (SID)」と「クライアント シークレット」の値を生成します。
- MobileFirst Operations Console →「 [ご使用のアプリケーション] 」→「プッシュ」→「プッシュ設定」で、これらの値を追加し、「保存」をクリックします。
MobileFirst プッシュ・サービス用 REST API または MobileFirst 管理サービス用 REST API のいずれかを使用して WNS をセットアップすることもできます。
SMS 通知サービス
以下の JSON を使用して、SMS 通知を送信するための SMS ゲートウェイがセットアップされます。 smsConf
REST API を使用して、SMS ゲートウェイ構成で MobileFirst Server を更新します。
{
"host": "2by0.com",
"name": "dummy",
"port": "80",
"programName": "gateway/add.php",
"parameters": [{
"name": "xmlHttp",
"value": "false",
"encode": "true"
}, {
"name": "httpsEnabled",
"value": "false",
"encode": "true"
}]
}
SMS 関連の REST API について詳しくは、プッシュ・サービス API リファレンスを参照してください。
スコープ・マッピング
push.mobileclient スコープ・エレメントをアプリケーションにマップします。
- MobileFirst Operations Console をロードし、「 [ご使用のアプリケーション] 」→「セキュリティー」→「スコープ・エレメントのマッピング」にナビゲートし、「新規」をクリックします。
-
「スコープ・エレメント」フィールドに「push.mobileclient」と入力します。 次に、「追加」をクリックします。
有効範囲 説明 apps.read アプリケーション・リソースの読み取りの許可 apps.write アプリケーション・リソースの作成、更新、削除の許可 gcmConf.read GCM 構成設定の読み取りの許可 (API キーおよび SenderId) gcmConf.write GCM 構成設定の更新、削除の許可 apnsConf.read APNs 構成設定の読み取りの許可 apnsConf.write APNs 構成設定の更新、削除の許可 devices.read デバイスの読み取りの許可 devices.write デバイスの作成、更新、削除の許可 subscriptions.read サブスクリプションの読み取りの許可 subscriptions.write サブスクリプションの作成、更新、削除の許可 messages.write プッシュ通知の送信の許可 webhooks.read イベント通知の読み取りの許可 webhooks.write イベント通知の送信の許可 smsConf.read SMS 構成設定の読み取りの許可 smsConf.write SMS 構成設定の更新、削除の許可 wnsConf.read WNS 構成設定の読み取りの許可 wnsConf.write WNS 構成設定の更新、削除の許可
認証済み通知
認証済み通知とは、1 つ以上の userId
に送信される通知です。
push.mobileclient スコープ・エレメントをアプリケーションで使用されるセキュリティー検査にマップします。
- MobileFirst Operations Console をロードし、「 [ご使用のアプリケーション] 」→「セキュリティー」→「スコープ・エレメントのマッピング」にナビゲートし、「新規」をクリックするか、既存のスコープ・マッピング・エントリーを編集します。
-
セキュリティー検査を選択します。 次に、「追加」をクリックします。
タグの定義
MobileFirst Operations Console →「 [ご使用のアプリケーション] 」→「プッシュ」→「タグ」で、「新規」をクリックします。
適切な「タグ名」
と「説明」
を入力し、「保存」をクリックします。
サブスクリプションにより、デバイス登録とタグが結び付けられます。 デバイスがタグから登録解除されると、関連付けられたすべてのサブスクリプションが、デバイス自体から自動的にアンサブスクライブされます。 デバイスのユーザーが複数存在するシナリオでは、サブスクリプションは、ユーザー・ログイン基準に基づいて、モバイル・アプリケーションに実装する必要があります。 例えば、ユーザーがアプリケーションに正常にログインした後にサブスクライブ呼び出しを行い、ログアウト・アクション処理の一部としてアンサブスクライブ呼び出しを明示的に行います。
通知の送信
プッシュ通知は、MobileFirst Operations Console から送信することも、REST API を使用して送信することもできます。
- MobileFirst Operations Console では、タグ通知およびブロードキャスト通知の 2 つのタイプの通知を送信できます。
- REST API では、タグ通知、ブロードキャスト通知、および認証済み通知のすべての形式の通知を送信できます。
MobileFirst Operations Console
単一デバイス ID、単一または複数のユーザー ID、iOS デバイスのみか Android デバイスのみ、またはタグにサブスクライブしているデバイスに対して通知を送信できます。
タグ通知
タグ通知は、特定のタグにサブスクライブしているすべてのデバイスをターゲットとする通知メッセージです。 タグはユーザーが関心のあるトピックを表し、選択した関心に従って通知を受けられる機能を提供します。
MobileFirst Operations Console →「 [ご使用のアプリケーション] 」→「プッシュ」→「通知の送信」タブで、「送信先」タブから「タグ別のデバイス」を選択し、「通知テキスト」を入力します。 次に、「送信」をクリックします。
ブロードキャスト通知
ブロードキャスト通知は、サブスクライブされているすべてのデバイスを宛先とするタグ・プッシュ通知の一形態です。 ブロードキャスト通知は、デフォルトでは、予約済みの Push.all
タグ (あらゆるデバイスで自動作成される) へのサブスクリプションによって、プッシュ対応のすべての MobileFirst アプリケーションに対して使用可能になります。 Push.all
タグは、プログラマチックにアンサブスクライブできます。
MobileFirst Operations Console →「 [ご使用のアプリケーション] 」→「プッシュ」→「通知の送信」タブで、「送信先」タブから「すべて」を選択し、「通知テキスト」を入力します。 次に、「送信」をクリックします。
REST API
REST API を使用する場合は、タグ通知、ブロードキャスト通知、および認証済み通知のすべての形式の通知を送信できます。
通知を送信するために、POST を使用して REST エンドポイントへの要求が行われます (imfpush/v1/apps/<application-identifier>/messages
)。
URL の例を以下に示します。
https://myserver.com:443/imfpush/v1/apps/com.sample.PinCodeSwift/messages
すべてのプッシュ通知 REST API を確認するには、ユーザー資料の REST API ランタイム・サービスのトピックを参照してください。
通知ペイロード
要求には、以下のペイロード・プロパティーを含めることができます。
ペイロード・プロパティー | 定義 |
---|---|
message | 送信されるアラート・メッセージ |
settings | 通知のさまざまな属性の設定。 |
target | ターゲットのセットで使用できるのは、コンシューマー ID、デバイス、プラットフォーム、またはタグです。 ターゲットのうちの 1 つのみを設定できます。 |
deviceIds | デバイス ID によって表されるデバイスの配列。 これらの ID を持つデバイスが通知を受け取ります。 これはユニキャスト通知です。 |
notificationType | メッセージの送信に使用されるチャネル (プッシュ/SMS) を示す整数値。 許可される値は、1 (プッシュのみ)、2 (SMS のみ)、および 3 (プッシュと SMS) です。 |
platforms | デバイス・プラットフォームの配列。 これらのプラットフォームを実行しているデバイスが通知を受け取ります。 サポートされる値は、A (Apple/iOS)、G (Google/Android)、および M (Microsoft/Windows) です。 |
tagNames | tagNames として指定されたタグの配列。 これらのタグにサブスクライブされているデバイスが通知を受け取ります。 タグ・ベース通知にはこのタイプのターゲットを使用します。 |
userIds | 通知の送信先とする、ユーザー ID によって表されるユーザーの配列。 これはユニキャスト通知です。 |
phoneNumber | デバイスを登録し、通知を受け取るために使用される電話番号。 これはユニキャスト通知です。 |
プッシュ通知ペイロード JSON サンプル
{
"message" : {
"alert" : "Test message",
},
"settings" : {
"apns" : {
"badge" : 1,
"iosActionKey" : "Ok",
"payload" : "",
"sound" : "song.mp3",
"type" : "SILENT",
},
"gcm" : {
"delayWhileIdle" : ,
"payload" : "",
"sound" : "song.mp3",
"timeToLive" : ,
},
},
"target" : {
// The list below is for demonstration purposes only - per the documentation only 1 target is allowed to be used at a time.
"deviceIds" : [ "MyDeviceId1", ... ],
"platforms" : [ "A,G", ... ],
"tagNames" : [ "Gold", ... ],
"userIds" : [ "MyUserId", ... ],
},
}
SMS 通知ペイロード JSON サンプル
{
"message" : {
"alert": "Hello World from an SMS message"
},
"notificationType":3,
"target" : {
"deviceIds" : ["38cc1c62-03bb-36d8-be8e-af165e671cf4"]
}
}
通知の送信
通知は、いろいろなツールを使用して送信できます。
テスト目的では、以下で説明するように Postman が使用されます。
-
機密クライアントを構成します。
REST API 経由でプッシュ通知を送信する場合、スペースで区切られたスコープ・エレメントmessages.write
とpush.application.<applicationId>
を使用します。 - http://localhost:9080/imfpush/v1/apps/com.sample.PushNotificationsAndroid/messages への POST 要求を行います。
- リモート MobileFirst を使用している場合、
hostname
とport
の値を実際の値で置き換えてください。 - アプリケーション ID 値を実際の値で更新します。
- リモート MobileFirst を使用している場合、
- ヘッダーを設定します。
- Authorization:
Bearer eyJhbGciOiJSUzI1NiIsImp ...
- 「Bearer」の後に続く値を上記ステップ (1) で入手したアクセス・トークンの値で置き換えます。
- Authorization:
- 本体を設定します。
- 上記の通知ペイロードの説明に従ってプロパティーを更新します。
- 例えば、userIds 属性が指定された target プロパティーを追加すると、特定の登録済みユーザーに通知を送信できます。
{ "message" : { "alert" : "Hello World!" } }
これで「送信」ボタンをクリックすると、デバイスに通知が到着します。
通知のカスタマイズ
通知メッセージを送信する前に、以下の通知属性をカスタマイズすることもできます。
MobileFirst Operations Console →「 [ご使用のアプリケーション] 」→「プッシュ」→「タグ」→「通知の送信」タブで、「iOS カスタム設定」/「Android カスタム設定」セクションを展開し、通知属性を変更します。
Android
- 通知音、FCM ストレージ内に通知を保管する期間、カスタム・ペイロードなど。
- 通知のタイトルを変更する場合は、Android プロジェクトの strings.xml ファイル内に
push_notification_tile
を追加します。
iOS
- 通知音、カスタム・ペイロード、アクション・キーのタイトル、通知タイプ、バッジの数値。
APNs プッシュ通知の HTTP/2 サポート
Apple Push Notification service (APNs) は、HTTP/2 ネットワーク・プロトコルに基づく新しい API をサポートします。 HTTP/2 のサポートには、以下に示すような多くの利点があります。
- メッセージの長さが 2 KB から 4 KB に増加し、通知に余分なコンテンツを追加できるようになりました。
- クライアントとサーバー間の複数の接続が不要になるため、スループットが向上します。
- Universal Push Notification クライアント SSL 証明書をサポートします。
MobileFirst でのプッシュ通知は、レガシー TCP ソケット・ベースの通知とともに、HTTP/2 ベースの APNs プッシュ通知をサポートするようになりました。
HTTP/2 の有効化
HTTP/2 ベースの通知は、JNDI プロパティーを使用して有効にすることができます。
<jndiEntry jndiName="imfpush/mfp.push.apns.http2.enabled" value= "true"/>
注: 上記の JNDI プロパティーを追加すると、レガシー TCP ソケット・ベースの通知は使用されず、HTTP/2 ベースの通知のみが有効になります。
HTTP/2 の プロキシー・サポート
HTTP/2 ベースの通知は、HTTP プロキシー経由で送信できます。 プロキシー経由での通知のルーティングを有効にするには、ここを参照してください。
プロキシー・サポート
プロキシー設定を使用して、通知が Android デバイスおよび iOS デバイスに送信される際に経由するオプションのプロキシーを設定できます。 プロキシーの設定には、push.apns.proxy. 構成プロパティーと push.gcm.proxy. 構成プロパティーを使用できます。 詳しくは、MobileFirst Server プッシュ・サービスの JNDI プロパティーのリストを参照してください。
次に使用するチュートリアル
これでサーバー・サイドがセットアップされたので、次はクライアント・サイドをセットアップし、受け取った通知を処理します。
- プッシュ通知の処理
- SMS 通知の処理
Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.