通知の送信

improve this page | report issue

概説

プッシュ通知または SMS 通知を iOS、Android、または Windows デバイスに送信するためには、まず、GCM 詳細 (Android)、APNS 証明書 (iOS)、または WNS 資格情報 (Windows 8.1 Universal/Windows 10 UWP) を使用して MobileFirst Server を構成する必要があります。 その後、すべてのデバイスに通知を送信したり (ブロードキャスト)、特定のタグに登録しているデバイス、単一デバイス ID、ユーザー ID、iOS デバイスのみ、Android デバイスのみ、または Windows デバイスのみに通知を送信したり、あるいは認証ユーザーに基づいて通知を送信したりできます。

前提条件: 必ず、通知の概要チュートリアルをお読みください。

ジャンプ先:

通知のセットアップ

通知サポートの有効化では、MobileFirst Server とクライアント・アプリケーションの両方でいくつかの構成ステップが必要になります。
この後のサーバー・サイドのセットアップを続けてお読みになるか、クライアント・サイドのセットアップにお進みください。

サーバー・サイドで必要なセットアップには、必要なベンダー (APNS、GCM、または WNS) の構成と push.mobileclient スコープのマッピングがあります。

Google Cloud Messaging / Firebase Cloud Messaging

注: 最近の発表で、Google は GCM から FCM への移行を表明しています。それに伴い、下記の手順も更新されました。また、既存で使用中の GCM 構成は引き続き機能しますが、新規 GCM 構成は機能しないため、代わりに FCM を使用する必要がある点にも注意してください。

Android デバイスは、プッシュ通知に Firebase Cloud Messaging (FCM) サービスを使用します。
FCM をセットアップするには、次のようにします。

  1. Firebase コンソールにアクセスします。
  2. 新規プロジェクトを作成し、プロジェクトに名前を付けます。
  3. 設定 (歯車) アイコンをクリックし、「プロジェクトの設定」を選択します。
  4. 「クラウド メッセージング」タブをクリックして、「サーバー 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 から android.googleapis.com への発信接続をポート 443 で受け入れるようにします。

GCM 資格情報の追加のイメージ

Apple Push Notifications Service

iOS デバイスは、プッシュ通知に Apple Push Notification Service (APNS) を使用します。
APNS をセットアップするには、次のようにします。

  1. 開発や実動のためのプッシュ通知証明書を生成します
  2. 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
  • 開発フェーズでは、apns-certificate-sandbox.p12 サンドボックス証明書ファイルを使用します。
  • 実動フェーズでは、apns-certificate-production.p12 実動証明書ファイルを使用します。
    • APNS 実動証明書は、その証明書を使用するアプリケーションが Apple App Store に正常に送信された後、はじめてテストできるようになります。

MobileFirst プッシュ・サービス用 REST API または MobileFirst 管理サービス用 REST API のいずれかを使用して APNS をセットアップすることもできます。

APNS 資格情報の追加のイメージ

Windows Push Notifications Service

Windows デバイスは、プッシュ通知に Windows Push Notifications Service (WNS) を使用します。
WNS をセットアップするには、次のようにします。

  1. Microsoft が提供する指示に従って、「パッケージ セキュリティ ID (SID)」「クライアント シークレット」の値を生成します。
  2. MobileFirst Operations Console →「 [ご使用のアプリケーション] 」→「プッシュ」→「プッシュ設定」で、これらの値を追加し、「保存」をクリックします。

MobileFirst プッシュ・サービス用 REST API または MobileFirst 管理サービス用 REST API のいずれかを使用して WNS をセットアップすることもできます。

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 スコープ・エレメントをアプリケーションにマップします。

  1. MobileFirst Operations Console をロードし、「 [ご使用のアプリケーション] 」→「セキュリティー」→「スコープ・エレメントのマッピング」にナビゲートし、「新規」をクリックします。
  2. 「スコープ・エレメント」フィールドに「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 スコープ・エレメントをアプリケーションで使用されるセキュリティー検査にマップします。

  1. MobileFirst Operations Console をロードし、「 [ご使用のアプリケーション] 」→「セキュリティー」→「スコープ・エレメントのマッピング」にナビゲートし、「新規」をクリックするか、既存のスコープ・マッピング・エントリーを編集します。
  2. セキュリティー検査を選択します。次に、「追加」をクリックします。

    認証済み通知

タグの定義

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 が使用されます。

  1. 機密クライアントを構成します
    REST API 経由でプッシュ通知を送信する場合、スペースで区切られた messages.writepush.application.<applicationId> のスコープ・エレメントを使用します。

    機密クライアントの構成

  2. アクセス・トークンを作成します

  3. http://localhost:9080/imfpush/v1/apps/com.sample.PushNotificationsAndroid/messages への POST 要求を行います。
    • リモート MobileFirst を使用している場合、hostnameport の値を実際の値で置き換えてください。
    • アプリケーション ID 値を実際の値で更新します。
  4. ヘッダーを設定します。
    • Authorization: Bearer eyJhbGciOiJSUzI1NiIsImp ...
    • 「Bearer」の後に続く値を上記ステップ (1) で入手したアクセス・トークンの値で置き換えます。

    許可ヘッダー

  5. 本体を設定します。
    • 上記の通知ペイロードの説明に従ってプロパティーを更新します。
    • 例えば、userIds 属性が指定された target プロパティーを追加すると、特定の登録済みユーザーに通知を送信できます。
    {
         "message" : {
             "alert" : "Hello World!"
         }
    }
    

    許可ヘッダー

これで「送信」ボタンをクリックすると、デバイスに通知が到着します。

サンプル・アプリケーションのイメージ

通知のカスタマイズ

通知メッセージを送信する前に、以下の通知属性をカスタマイズすることもできます。

MobileFirst Operations Console →「 [ご使用のアプリケーション] 」→「プッシュ」→「タグ」→「通知の送信」タブで、「iOS カスタム設定」/「Android カスタム設定」セクションを展開し、通知属性を変更します。

Android

  • 通知音、GCM ストレージ内に通知を保管する期間、カスタム・ペイロードなど。
  • 通知のタイトルを変更する場合は、Android プロジェクトの strings.xml ファイル内に push_notification_tile を追加します。

iOS

  • 通知音、カスタム・ペイロード、アクション・キーのタイトル、通知タイプ、バッジの数値。

プッシュ通知のカスタマイズ

プロキシー・サポート

プロキシー設定を使用して、通知が Android デバイスおよび iOS デバイスに送信される際に経由するオプションのプロキシーを設定できます。プロキシーの設定には、push.apns.proxy. 構成プロパティーと push.gcm.proxy. 構成プロパティーを使用できます。詳しくは、MobileFirst Server プッシュ・サービスの JNDI プロパティーのリストを参照してください。

次に使用するチュートリアル

これでサーバー・サイドがセットアップされたので、次はクライアント・サイドをセットアップし、受け取った通知を処理します。

Last modified on March 10, 2017