機械翻訳について

16 通知

Oracle Mobile Cloud Service (MCS)は、モバイル・アプリを実行しているデバイスに対する通知の送信を簡素化するために通知APIを提供します。 モバイル・アプリケーション開発者は、モバイル・アプリケーションを通知用に設定し、通知APIを使用して通知を送信できます。 サービス開発者は、カスタムAPIに実装コードを追加して通知をトリガーできます。

通知によって何ができるか

通知により、モバイル・ユーザーが検索する情報とイベントをタイムリに確認できます。 通知は、モバイル・アプリケーションに送信される短くて具体的かつ的を絞ったメッセージです。 通常、通知の目的は新しい情報があることをユーザーに知らせることです。 たとえば、買い物アプリを実行しているユーザーは、今後のセールに関する情報を得る場合があります。

これらの対象となるメッセージは、必要に応じて、または事前定義されたスケジュールで、次のいずれかに送信できます:

  • 特定のデバイスIDまたはデバイスIDのコレクション(主にテストに便利)

  • 特定のユーザーまたはユーザーのコレクション

  • 特定のモバイル・バックエンドに関連付けられているすべてのユーザーおよびデバイス

  • 指定したオペレーティング・システム(iOS、AndroidまたはWindows)のデバイスまたはユーザー

注意:

プッシュ通知は、重大または緊急な情報には使用しないでください。ネットワーク遅延およびその他の問題により配信をタイミングを逸したものにする可能性があるからです。 ただし、スポーツのスコアや今後のセールなど日常の利用には、通知はすばらしいものです。

通知がどのように送信および受信されるか

モバイル・アプリケーションの開発者は、ネットワークを介して通知を受信するようにモバイル・アプリを構成します。 モバイル・アプリが構成され、デバイスにインストールされると、バックエンドに接続して通知を受け取ります。 通知が通るパスを要約したものを次に示します。

  1. 通知を作成し (例: "Hi! Our storewide sale is tomorrow")、受信者を定義します。 通知は、特定のユーザー、デバイス、ユーザーまたはデバイスのセット、バックエンドの全員、または特定のデバイス・タイプ(Android、iOS、Windows)に送信できます。 通知をすぐに送信することも、後で通知を送信するように日時をスケジュールすることもできます。 通知をPOSTすると、メッセージのIDが作成されます。 メッセージがまだ送信されていない場合は、このIDを使用してメッセージをキャンセルすることができます。

  2. この通知は、関連付けられたデバイスIDに宛てられ、配信のために適切なプッシュ・ネットワークに配信されます。

  3. モバイル・アプリケーションによって通知が受信され、デバイスの所有者が取得します。

    通知サービス・プロバイダとそのペイロードの制限は次のとおりです。
    • WNS: 5K

    • FCM: 4K

    • GCM: 4K

    • APNS: 4K

    • SMS: 1000バイト

デバイスID (通知トークン)とは

デバイスID (通知トークンとしても知られる)は、特定のデバイスと関連付けられているモバイル・アプリケーションの特定のインスタンスを一意に識別します。 このIDは、通知を正しい受信者に送信するために使用されます。

デバイス・ハンドシェイク中にモバイル・アプリがデバイスを登録すると、一意のデバイスIDが割り当てられます。 その時点から、そのIDはその特定の受信者を識別するために使用できます。 同じデバイスにある同じモバイル・アプリの複数のインスタンスには別のデバイスIDがあります。 デバイスIDは定期的に変更されますが、これは内部で処理され、モバイル・アプリには透過的です。

UIの関連するバックエンドの通知ページから、モバイル・アプリに登録されているデバイスIDをDevice Registryで検索できます。 特定のデバイスIDを通知の受信者用アドレスとして使用するように登録するには、REST APIを使用できます。 デバイスIDに通知を直接送信するのは、テストの場合にのみ便利である点に注意してください。 ユーザーの特定のグループに通知を送信するには、より効率的な方法があります。 詳細および例は、「アプリとの通知の送受信」を参照してください。

通知のためのモバイル・アプリの設定

始める前に、クライアントSDKのNotificationsライブラリをインストールして、開発を簡単にすることができます。 通知SDKライブラリはアプリに独立してインストールすることもでき、他のモバイル・クライアントSDKライブラリとともにインストールすることもできます。 SDKの詳細はSDKを参照してください。

設定プロセスはプラットフォームごとに異なります:

プラットフォームの設定ステップを完了したら、MCSからモバイル・アプリに通知を送信するためのオプションがいくつかあります。 アプリとの通知の送受信を参照してください。

OMCeにアプリケーション・クライアントを登録したので、「あなたのアプリケーションとの間で通知を送信」に示すように、アプリに通知を送信するためのオプションがいくつかあります。

Android通知を設定

通知のためにAndroidアプリを設定するには、次のステップに従います:
  1. まず、通知プロバイダから資格証明を取得して、ネットワークで既知のアイテムとしてモバイル・アプリを確立します。 「Android: Google APIキー」を参照してください。

  2. MCSにモバイル・アプリケーションのクライアントを作成し、ステップ1で取得したネットワーク資格証明を入力して通知プロファイルを設定します。 クライアント管理を参照してください。

  3. モバイル・デバイスから通知プロバイダに接続するようにアプリを設定し、通信のルールを確立します。 「Android用デバイス・ハンドシェイクの設定(FCM)」を参照してください。

これらのステップを完了したら、MCSからモバイル・アプリへ通知を送信する方法を次の中から選択できます。 アプリとの通知の送受信を参照してください。

Android: Google APIキー
通知用のAndroidモバイル・アプリの構成には、Firebase Cloud Messaging (FCM)が必要です。これは以前はGoogleクラウド・メッセージング(GCM)だったものです。 GCMは段階的に廃止されるため、新しいアプリをFCMで構成する必要があります。 既存のアプリの移行については、Google Developersの「Android用GCMクライアント・アプリケーションをFirebase Cloud Messagingに移行」をご覧ください。
Androidモバイル・アプリケーション設定の詳細は、Googleのデベロッパ・サイトでSet Up a Firebase Cloud Messaging Client App on Androidを参照してください。 このページには、インスタンスID APIを使用して登録トークンを作成および更新する方法の詳細に加え、プロジェクトに必要な構成ファイルを生成するための詳細な手順とリンクが含まれます。

注意:

アプリの構成ファイルを生成する際には、クラウド・メッセージング・サービスを使用可能にするよう選択してください。

FCM通知

FCM通知の場合、AndroidアプリのAndroidManifest.xmlファイルの<application>ノード内に、次のエントリを追加します:

<service android:name="oracle.cloud.mobile.fcmnotifications.McsRegistrationIntentService" android:exported="false" /> 
<service android:name="oracle.cloud.mobile.fcmnotifications.MCSFirebaseInstanceIDService">
	<intent-filter>
		<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
	</intent-filter>
</service>

「FirebaseとFCM SDKを設定」で説明されているように、FCMメッセージング・ライブラリをアプリケーション・ビルドファイルの依存ライブラリとして追加する必要があります。 生成が完了すると、プロジェクト番号(別名センダID)とサーバー・キーが表示されます。 通知用のモバイル・アプリをMCSに登録するには、これらの資格証明が必要です。 これらはモバイル・アプリに対して一意であり、他のアプリに通知を送信する際には使用できません。 「Android用デバイス・ハンドシェイクの設定(FCM)」で説明されているように、FCMから登録トークンを取得し、MCSとの接続を設定するには、これらの値も必要です。

GCM通知

GCM通知の場合、AndroidアプリのAndroidManifest.xmlファイルの<application>ノード内に次のエントリを追加します:
<service android:name="oracle.cloud.mobile.notifications.McsRegistrationIntentService" android:exported="false" /> 
<service android:name="oracle.cloud.mobile.notifications.GcmTokenRefreshListenerService" android:exported="false">
	<intent-filter>
		<action android:name="com.google.android.gms.iid.InstanceID" />
	</intent-filter>
</service>
アプリケーションのビルド・ファイルにGoogle Play Servicesが依存ライブラリとして追加されている必要があります。そうでない場合には、サービスにエラーのフラグが立てられます。

生成が完了すると、「プロジェクト番号」 (別名「発信者ID」)と「レガシー・サーバー・キー」が表示されます。 MCSに通知用モバイル・アプリを登録するには、これらの資格証明が必要です。 これらはモバイル・アプリに対して一意であり、他のアプリに通知を送信する際には使用できません。 FCMから登録トークンを取得し、MCSとの接続を設定するには、これらの値も必要です(「Android用デバイス・ハンドシェイクの設定(FCM)」の説明を参照)。

Android用デバイス・ハンドシェイクの設定(FCM)

このセクションでは、あなたのアプリケーション用の構成ファイルがすでに生成されていることを前提としています。 「Android: Google APIキー」で説明されているように、プロジェクトの構成時に取得した送信者ID (プロジェクト番号)が必要です。

FCM通知の場合、Androidアプリは通知を受信するサービスを定義するためにFirebaseMessagingServiceを拡張する必要があります。 onMessageReceivedメソッドをオーバーライドすると、受信メッセージに基づいてアクションを実行できます。 Androidでの通知の処理の詳細については、Google FCMデベロッパの「メッセージを受け取る」をご覧ください。

アプリケーションのsrc/main/AndroidManifest.xmlファイルで、終了する</application>タグの直前に、以下に示すようにNotificationsサービスに登録します。

<application> ... 
<service    
		android:name="oracle.cloud.mobile.fcmnotifications.MCSFirebaseMessagingService">
 <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
 </intent-filter>
</service>
</application> 

これらのエントリをAndroidマニフェスト(<application>エントリの上のどこか)に挿入して、通知を受信して表示する権限を設定します。

<uses-permission
android:name="android.permission.INTERNET"/> 
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission
android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission 
android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application>

コミュニケーションを確立して通知を登録するには、クライアントSDKを使用してAndroidアプリでデバイスのハンドシェイクがどのように表示されるかを次に示します。

...
import oracle.cloud.mobile.exception.ServiceProxyException;
import oracle.cloud.mobile.fcmnotifications.Notifications;
import oracle.cloud.mobile.mobilebackend.MobileBackendManager;

public class MainActivity extends Activity {
	private Notifications mNotification;

    @Override protected void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.activity_main);
			this.registerNotificationClient();
}
//method that initializes and returns the Notifications client
private void registerNotificationClient(){
try {
			mNotification = 
MobileBackendManager.getManager().getDefaultMobileBackend(this).getServiceProxy(Notifications.class);
		  mNotification.initialize(this);
	  } catch (ServiceProxyException e) {
			e.printStackTrace();
	  }
}
}

FCM登録トークンの取得

登録トークンを取得するには、アプリをFCMに登録するには、センダーIDが必要です。 登録トークンはOMCeに渡されます。OMCeは通知と共にパッケージを作成し、アプリとそれが実行されているデバイスがネットワーク上の正当な受信者であることをGoogleに通知します。 Googleでは、登録トークンを処理するためのインスタンスID APIを提供しています。 Googleデベロッパについては、Set Up a Firebase Cloud Messaging Client App on Androidを参照してください。

正常登録時にコールバックを設定するには、次の例のようにコードを追加します。

public void onClick(View view) {
  try {
    //Registration process callback
    mRegistrationBroadcastReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
        SharedPreferences sharedPreferences =
                    PreferenceManager.getDefaultSharedPreferences(context);
        boolean sentToken = sharedPreferences
                    .getBoolean(NotificationsConfig.SENT_TOKEN_TO_SERVER, false);
        if (sentToken) {
            Logger.debug(TAG, "Token retrieved and sent to server.");
        } else {
            Logger.debug(TAG, "An error occurred while registering the device");
        }
      }
    };
    //call on successful registration
    LocalBroadcastManager.getInstance(mCtx).registerReceiver(
            mRegistrationBroadcastReceiver,
            new IntentFilter(NotificationsConfig.REGISTRATION_COMPLETE));
    //Initialization of MCS notifications service
    not = MobileBackendManager.getManager().getDefaultMobileBackend
            (mCtx).getServiceProxy(Notifications.class);
    boolean result = not.initialize(mCtx);
  } catch (ServiceProxyException e) {
    e.printStackTrace();
  }
}
アプリを設定および登録すると、通知を送受信できるようになります。 詳細およびサンプル・コードは、「アプリとの通知の送受信」を参照してください。
デバイスの登録を解除

通知のために端末の登録を解除するには、クライアントSDKを使用してAndroidアプリでコードがどのように表示されるかを次に示します:

//Initialization of MCS notifications service
Notifications notifications = MobileManager.getManager().getDefaultMobileBackend(getApplicationContext()).getServiceProxy(Notifications.class);
boolean result = notifications.deregisterDevice(view.getContext());

Logger.debug(TAG, "unregister " + result);
Android用デバイス・ハンドシェイクの設定(GCM)

このセクションでは、あなたのアプリケーション用の構成ファイルがすでに生成されていることを前提としています。 「Android: Google APIキー」で説明されているように、プロジェクトの構成時に取得した送信者ID (プロジェクト番号)が必要です。

デバイスのハンドシェイクに加えて、GCM通知の場合、Androidアプリケーションは通知サービスのレシーバを定義するためにGcmListenerServiceを拡張する必要があります。 Android SDKのonMessageReceivedメソッドをオーバーライドすると、着信メッセージに基づいてアクションを実行できます。 Google Developersの「シンプル・ダウンストリーム・メッセージング」をご覧ください。

アプリケーションのmain/AndroidManifest.xmlファイルで、終了する</application>タグの直前に、以下に示すように、Notificationsサービスのサービスとブロードキャスト・レシーバを登録します。
<application>
...
	<receiver android:name="oracle.cloud.mobile.notifications.Mcs2GcmListenerService"
            android:permission="com.google.android.c2dm.permission.SEND">
		<intent-filter>
			<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
			<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
			<category android:name="YOUR.PACKAGE.NAME"/>
		</intent-filter>
	<receiver>
</application> 
これらのエントリをAndroidマニフェスト(<application>エントリの上のどこか)に挿入して、通知を受信して表示する権限を設定します。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<permission android:protectionLevel="signature"
            android:name=YOUR.PACKAGE.NAME.permission.C2D_MESSAGE"/>
<uses-permission android:name="YOUR.PACKAGE.NAME.permission.C2D_MESSAGE"/>
<application>
コミュニケーションを確立して通知を登録するには、SDKを使用してAndroidアプリでデバイスのハンドシェイクがどのように表示されるかを次に示します:
...
import oracle.cloud.mobile.exception.ServiceProxyException;
import oracle.cloud.mobile.mobilebackend.MobileBackendManager;
import oracle.cloud.mobile.notifications.Notifications;

public class MainActivity extends Activity {
    private Notifications mNotification;
    private final String PROJECT_ID = "PROJECT_ID_COPIED_FROM_GOOGLE_API_CONSOLE";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.registerNotificationClient();
        ...
    }
//method that initializes and returns the Notifications client
    private void registerNotificationClient(){
        try {
            mNotification = MobileBackendManager.getManager().getDefaultMobileBackend(this).getServiceProxy(Notifications.class);
            mNotification.initialize(this, PROJECT_ID);
        } catch (ServiceProxyException e) {
            e.printStackTrace();
        }
    }
...
}

GCM登録トークンの取得

登録トークンを取得するには、アプリをGCMに登録するには、送信者IDが必要です。 登録トークンはMCSに渡されて、通知でパッケージ化され、アプリとそのアプリが実行されるデバイスがネットワーク上で正規の受信者であることがGoogleに通知されます。

正常登録時にコールバックを設定するには、次の例のようにコードを追加します。
public void onClick(View view) {
    try {
        //Registration process callback
        mRegistrationBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {

                SharedPreferences sharedPreferences =
                        PreferenceManager.getDefaultSharedPreferences(context);
                boolean sentToken = sharedPreferences
                        .getBoolean(NotificationsConfig.SENT_TOKEN_TO_SERVER, false);
                if (sentToken) {
                    Logger.debug(TAG, "Token retrieved and sent to server!");
                } else {
                    Logger.debug(TAG, "An error occurred while either fetching the InstanceID");
                }
            }
        };

				//call on successful registration
        LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(mRegistrationBroadcastReceiver,
                new IntentFilter(NotificationsConfig.REGISTRATION_COMPLETE));

        //Initialization of notifications service
        not = MobileBackendManager.getManager().getDefaultMobileBackend(view.getContext()).getServiceProxy(Notifications.class);
        boolean result = not.initialize(view.getContext(), "714568881816");

    } 
		catch (ServiceProxyException e) {
        e.printStackTrace();
    }
}

アプリを設定および登録すると、通知を送受信できるようになります。 詳細およびサンプル・コードは、「アプリとの通知の送受信」を参照してください。

iOS通知を設定

通知用にiOSアプリを設定するには、次のステップを実行します:
  1. まず、通知プロバイダから資格証明を取得して、ネットワークで既知のアイテムとしてモバイル・アプリを確立します。 iOS: Apple Secure Certificatesを参照してください。

  2. MCSにモバイル・アプリケーションのクライアントを作成し、ステップ1で取得したネットワーク資格証明を入力して通知プロファイルを設定します。 クライアント管理を参照してください。

  3. モバイル・デバイスから通知プロバイダに接続するようにアプリを設定し、通信のルールを確立します。 「iOSのデバイス・ハンドシェイクの設定」を参照してください。

これらのステップを完了したら、MCSからモバイル・アプリへ通知を送信する方法を次の中から選択できます。 アプリとの通知の送受信を参照してください。

iOS: Appleセキュア証明書
通知には、アカウントの設定に使用した証明書の他に、Appleからの追加のセキュアな証明書が必要です。 この項では、Apple開発者アカウントを持っていることを前提としています。 iOSでの通知の使用方法の詳細は、http://developer.apple.com「Local and Remote Notification Programming Guide」を参照してください。

通知はAppleのネットワークを特別な用途で使用するため、Appleはセキュリティ保護を強化します。 次のいずれかのセキュア証明書が必要です。

  • 開発期間に、通知を使用したアプリケーションを開発およびテストするためのAppleプッシュ通知サービスSSL (サンドボックス)証明書。 サンドボックス証明書は自動化されたQA環境用で、デバイスはあまり頻繁には変更されません。 ほとんどの場合、スパム・フィルタは使用不可にする必要があります。

  • アプリケーションをAppleのApp StoreにリリースするためのAppleプッシュ通知サービスSSL (本番)証明書。 Appleでは、アプリを一般に出荷する前にこの証明書が必要ですが、アプリが取得するまで待つことができます。

サンドボックスの証明書または本番の証明書を取得するステップは、アプリを設定するときに最初にセキュアな証明書を取得するために使用したステップととても類似しています。 この項では、すでにApple Developerアカウントを設定し、必要なセキュア証明を取得し、アプリケーションIDとプロビジョニング・プロファイルを設定していることを前提としています。

  1. アプリIDの作成時にプロビジョニング・プロファイルで通知を有効化しなかった場合は、この時点で戻り、有効化します。
  2. Appleデベロッパ・センターから資格証明を取得します。 アプリを作成したときに設定したアプリIDを使用します。

    注意:

    Appleの指示に従って証明書署名リクエスト(CSR)ファイルを作成し、.p12ファイルにエクスポートしてMCSにアップロードします。 .p12セキュアな証明書をパスワードで保護しないでください。 (.p12ファイルを保存するときは、パスワード・フィールドを空白のままにしておきます。)
MCSに通知用モバイル・アプリを登録するには、証明書が必要です。 これはモバイル・アプリに対して一意であり、他のアプリに通知を送信する際には使用できません。 これらの余分な証明書を構成したら、Appleからデバイス・トークンを取得し、MCSとの通信を構成することができます(「iOSのデバイス・ハンドシェイクの設定」で説明)。
iOSのデバイス・ハンドシェイクの設定
iOSデベロッパとして、デバイス・ハンドシェイクを行うには、デバイス・トークンを取得し、通知オブジェクトを取得し、通知用にアプリを登録するために、このコードをXcodeプロジェクトに追加する必要があります:
アプリケーションが起動するたびに登録コードを呼び出す必要があることに注意してください。
  1. Appleから、デバイス・トークンを取得します。
    if([application respondsToSelector:@selector(registerUserNotificationSettings:)]){
    	//use registerUserNotificationSettings for iOS 8 and later
    	UIUserNotificationSettings *settings=[UIUserNotificationSettings settingsForType:(UIUserNotificationTypeBadge
    				|UIUserNotificationTypeSound
    				|UIUserNotificationTypeAlert) categories:nil];
    	[application registerUserNotificationSettings:settings];
    } else {
    	//We expect deprecation warnings here - this is for iOS 7.1 or before
    	[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
    	(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
    }	

    コードの前述の行を呼び出した後、Appleプッシュ通知サービス(APNS)は、成功または失敗に応じて、デバイス・トークンを取得するためにいずれかの委譲メソッドを呼び出します。 成功した場合は、以下のいずれかのメソッドが呼び出されます: didRegisterUserNotificationSettings: (iOS 8以降)またはdidRegisterForRemoteNotificationsWithDeviceToken: (iOS 7.1)。 エラーの場合は、didFailToRegisterForRemoteNotificationsWithEffor:メソッドが呼び出されます。

  2. Notifications SDKオブジェクトを取得します。
    (OMCNotifications *) getOMCNotifications{
       OMCAuthorization *auth = [[OMCMobileBackendManager sharedManager] mobileBackendForName:
         <Name_of_Mobile_Backend_from_OMC.Plist>].authorization;
       OMCNotifications* omcNOtifications=nil;
       NSError* err = [auth authenticate:<Username> password:<Password>];
       if (!err){
          omcNotifications = [[[OMCMobileBackendManager sharedManager] mobileBackendForName:
             <Name_of_Mobile_Backend_from_OMC.Plist>] notifications];
       }
       return omcNotifications;
    }
    
  3. Notifications SDKオブジェクトを使用して通知を登録します。 omcNotificationsOMCNotifications.classのオブジェクトであることに注意してください。
    [omcNotifications registerForNotifications:dataDeviceToken
    	onSuccess:^(NSHTTPURLResponse *response){
    		dispatch_asynch(dispatch_get_main_queue(),^{
    			//Update UI here
    		});
    	} onError:^(NSError *error){
    	dispatch_async(dispatch_get_main_queue(),^{
    			//Update UI here
    		});
    	}];

次に、モバイル・アプリを関連するモバイル・バックエンドに登録し、通知を有効にします。 「MCSでのクライアントとしてのアプリケーションの登録」を参照してください。

アプリを登録した後は、様々なソースから通知を受信できます。 詳細およびサンプル・コードは、「アプリとの通知の送受信」を参照してください。

Windows通知の設定

通知用にWindowsアプリを設定するには、次のステップを実行します:
  1. まず、通知プロバイダから資格証明を取得して、ネットワークで既知のアイテムとしてモバイル・アプリを確立します。 「Windows: WNS資格証明」または「Syniverse: SMS資格証明」を参照してください。

  2. MCSにモバイル・アプリケーションのクライアントを作成し、ステップ1で取得したネットワーク資格証明を入力して通知プロファイルを設定します。 クライアント管理を参照してください。

  3. モバイル・デバイスから通知プロバイダに接続するようにアプリを設定し、通信のルールを確立します。 「Windows用デバイス・ハンドシェイクの設定」を参照してください。

これらのステップを完了したら、MCSからモバイル・アプリへ通知を送信する方法を次の中から選択できます。 アプリとの通知の送受信を参照してください。

Windows: WNS資格証明
通知用のWindowsモバイル・アプリを構成するには、Windowsプッシュ通知サービス(WNS)の一意の資格証明のセットが必要になります。 この項では、Microsoft開発者アカウントを持っていることを前提としています。
WNSでの認証には、次の資格証明が必要になります。
  • クライアントID (パッケージSIDとも呼ばれます)

  • クライアント・シークレット(秘密キーとも呼ばれます)

これらの資格証明を取得するには、Windowsストア・ダッシュボード(Windowsデベロッパー センターで入手可能)でモバイル・アプリを登録します。 WNSの詳細については、MSDNの「WNSの概要」を参照してください。

通知用のモバイル・アプリをMCSに登録するには、これらの資格証明が必要です。 これらはモバイル・アプリに対して一意であり、他のアプリに通知を送信する際には使用できません。

Syniverse: SMS資格証明

Syniverse Messaging Serviceを使用してSMS(Short Message Service)を送信するには、まずSyniverse Developer Communityにプロファイルを作成し、サービスに登録してアプリケーションを登録し、資格証明を取得します。

Syniverse Developerコミュニティでのプロファイルの作成

  1. Syniverse開発者コミュニティ(developer.syniverse.com)にアクセスします。

  2. 右上隅にあるSign Upをクリックし、必要な情報を入力します。

  3. Syniverse開発者コミュニティに会社からのインビテーション・コードがある場合は、「Company invite code」フィールドに入力します。 ない場合は、このステップを無視してください。

  4. サービス規約を一読して同意します。

  5. 「Captcha」ボックスをチェックし、ロボットではないことを証明する設問に答えます。

  6. 「Create profile」をクリックします。

  7. 確認のメールが届いたら、メールのリンクをクリックしてユーザー資格証明を確認します。

Syniverse Messagingサービスのサブスクライブ

Syniverseから取得したSMSショート・コードを使用してアプリケーションでSMSを使用するには、Syniverse Messaging Serviceへの登録が必要です。

  1. Syniverse開発者コミュニティ(developer.syniverse.com)にログインします。

  2. 右上隅にあるユーザー名をクリックし、「Company」を選択します。 アカウントにそれに関連付けられたビリング・アドレスがあることを確認します。

  3. Service OfferingsMessaging Offeringにアクセスし、「Subscriptions」をクリックします。

  4. 「Subscribe」をクリックし、「Initial account for [Your username]」を選択します。

    1. サービス規約を一読して同意します。

    2. 「Confirm」を選択します。

    3. アカウントが「Subscriptions」にリストされていることを確認します。

  5. メッセージのテストにSyniverseの提供するパブリック・チャンネルを使用している場合は、関連するホワイトリストにテスト電話番号を追加する必要があります。 (ホワイトリスト登録は、SMSを米国またはカナダの電話番号にテストする場合にのみ必要で、プロダクション・アプリでは必要ありません)。

    1. 右上隅にあるユーザー名をクリックし、「Company」を選択します。

    2. 「Company」のページで、「Whitelist」タブをクリックします。

    3. Click 「Add phone number」をクリックし、電話番号をITU-TのE.164形式で入力します(例: +11234567890)。

    4. 「Send confirmation code」をクリックして、ランダム生成された数字をテキスト・メッセージで当該の電話番号に送ります。

    5. テキスト・メッセージから確認コードを取得し、「Confirmation code」フィールドに入力します。 「Add」をクリックして、電話番号のホワイトリストを確認します。

    6. 電話番号がホワイトリストに「Validated」の状態で含まれていることを確認します。

アプリケーションの登録および資格証明の取得

Syniverse Messaging Serviceでメッセージの送信がある前に、SDCプラットフォームにアプリケーションが構成されている必要があります。 アプリケーションが登録されると、必要な資格証明が生成されます。

  1. Syniverse開発者コミュニティ(developer.syniverse.com)にログインします。

  2. 「Applications」をクリックします。

  3. 「New application」をクリックします。

    ダイアログで:

    1. アプリケーションに名前と説明を付け、「Save」をクリックします。

    2. アプリケーション名の横にあるギア・アイコンをクリックし、「Edit」を選択します。

    3. 「SDCセルフサービス」をクリックし、すべてのオプションが選択されていることを確認します。

    4. 「Account & APIs」をクリックし、「Account」のドロップダウンから「Initial account for [Your username]」を選択します。

      次のサービスをオンにします: メッセージングSDCゲートウェイ・サービスイベント・サブスクリプション・サービス音声&メッセージおよびホワイトリスト・サービスです。

    5. 「Save」をクリックします。

  4. 必要な資格証明を生成します:

Windows向けデバイス・ハンドシェイクの設定
このセクションでは、「Windows: WNS資格証明」で説明したとおりに、モバイル・アプリをWNSにすでに登録していることを前提とします。
SDKを使用したWindowsアプリでのデバイス・ハンドシェイクは次のようになります。
...

using Oracle.Cloud.Mobile.Notifications;
using Windows.Networking.PushNotifications;

namespace MyWindowsApp
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

            //
            // First login to MCS
            //
            var loginDialog = new LoginDialog();
            loginDialog.ShowAsync().ContinueWith((task) => RegisterForNotificationsAsync());
        }

        private async Task RegisterForNotificationsAsync()
        {
            var backend = ((App)App.Current).Backend;

            // Register for Push Notifications
            PushNotificationChannel channel =
                await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

            await backend.GetService<Notifications>().RegisterForNotificationsAsync(channel.Uri);
        }		

        ...
    }
}

チャネルURIのリクエストと通知ペイロードの構築の詳細については、「Windowsプッシュ通知サービス(WNS)の概要」を参照してください。

次に、モバイル・アプリを関連するMCSモバイル・バックエンドに登録し、通知を有効にします。 手順の詳細は、「モバイル・バックエンド」の章の「MCSにアプリをクライアントとして登録する方法」を参照してください。

アプリを登録した後は、様々なソースから通知を受信できます。 詳細は、「アプリとの通知の送受信」を参照してください。

アプリとの通知の送受信

モバイル・アプリを設定および登録した後は、通知およびSMSメッセージの送信を開始できます。

  • 通知を送信し、UIからスケジュール通知を取消します。これは開発に役立ちます。

  • 通知APIを使用して、どこにいてもアプリやデバイスからの通知を送信できます。

UIまたは通知APIを使用して通知のステータスを確認することもできます。 詳細は、「通知のトラブルシューティング」を参照してください。

MCS UIからの通知のテスト

MCSは、定義された受信者の一組組にスケジュール済の通知を送信することを可能にするUIのテスト結果通知を提供します。
  1. 通知を作成する環境内にいることを確認します。 サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「Applications」→「Mobile Backends」を選択します。
  2. 「Mobile Backends」ページで、モバイル・アプリを含めるモバイル・バックエンドを選択し、「Open」をクリックします。
  3. 「Notifications」をクリックします。
  4. 「Notifications」ページで「Send」アイコンをクリックします。
  5. デバイスがまだ登録されていない場合は、「デバイスの管理」をクリックしてDevice Registryにアクセスできます。
    UIを通じてデバイスをSMSに登録するには、「クライアント管理」に説明されているように、関連するMCSクライアント・プロファイルで管理の無効化に同意している必要があります。 UIを使用してSMS用のデバイスを登録してもそれが失敗した場合は、Syniverse Developer Community設定に問題がある可能性があります。 「Syniverse: SMS資格証明」で説明されているすべてのステップを完了していることを確認してください。
  6. 送信する通知メッセージをプレーン・テキストまたはJSONペイロードで入力します。 JSONを入力する場合は、通知プロバイダの要件に従う必要があります。 有効なJSONでない場合、プレーン・テキスト・メッセージとして送信されます。
  7. いつメッセージを送信するかを選択します。
    • ただちにメッセージを送信する場合には、デフォルトの「Now」のままにします。
    • 後の日付および時間に通知をスケジュールするには、「Later」を選択し、通知を送信する日付および時間を選択します。
  8. メッセージを送信する宛先を選択します。
    • モバイル・バックエンドで全員に通知を送信するには、デフォルトの「All notifications-enabled mobile apps that use this mobile backend」のままにします。 単一のモバイル・バックエンドには、様々なデバイスおよびネットワークの実装を持つモバイル・アプリケーションの1つ以上のバージョンが含まれる可能性があります。 このオプションでは、ネットワークまたはデバイスにかかわらず、すべての通知可能クライアントに送信します。
    • ユーザー名、プラットフォーム・タイプ、デバイスID、Facebook IDまたは任意の組合せによるフィルタを定義するには、「Filtered set of recipients」を選択します。 「Match all of the following」の下で、ドロップダウン・リストのフィルタ・タイプを選択します。
      • Device ID: 単一のデバイスID、または複数のデバイスIDに同時に通知を送信します。 デバイスIDは、デバイス・ハンドシェイク中にモバイル・デバイスに割り当てられた一意の番号です。 SMSでは、デバイスIDは電話番号です。 一般的に、デバイスIDに通知を送信することはアプリケーションのテストには有用ですが、大量処理では実用的ではありません。

      • Platform: iOS、Android、WindowsまたはWebで実行しているすべての受信者に送信します。

      • プロバイダ: APNS、GCM、FCM、WNSまたはSMS通知を受信したすべての受信者に送信します。

      • User: 単一のユーザーまたはユーザーのリストに通知を送信します。

      • Facebook Unique ID: Facebookユーザー(ID)に通知を送信します。

      受信者のリストが長すぎる場合、+ボタンをクリックして別のフィルタを追加し、そこで入力を続けます。 フィルタは追加の選択のために、混在および照合できます。
  9. 「Send」をクリックします。
「Send」をクリックすると、通知のステータスを「History」ペインで監視できます。 詳細は、「通知のトラブルシューティング」を参照してください。
UIからのスケジュール済ポリシーの取消
将来のためにスケジュールされた通知のみ取り消すことができます。
スケジュールされた通知を取り消すには、「History」ペインの「Scheduled」タブに進み、削除するエントリの角にあるXをクリックします。 取消の確認を求められます。

通知APIを使用した通知の送信

通知APIを使用して、通知をアプリからモバイル・デバイスに送信できます。 通知には、1コールにつき最大1,000デバイスの制限があります。

通知REST APIエンドポイントを直接呼び出すことも、モバイル・アプリでカスタム・コードを使用することもできます。 このセクションでは、RESTエンドポイントについて説明します。 例とサンプル・コードを含むカスタム・コードの使用については、「カスタム・コードからAPIを呼び出す」の章の「カスタム・コードから通知APIにアクセス」を参照してください。

通知用のデバイスIDを登録するには、「デバイスIDの登録」で説明されているように、UIまたは通知デバイス登録APIを使用できます。

/mobile/system/notifications/notificationsエンドポイントでは、通知の送信、スケジュールされた通知の取消、および送信された通知のステータスの確認を行うことができます。

注意:

このエンドポイントへの呼出しには次のヘッダーを含める必要があります。
  • Authorization: 基本認証を使用している場合、このヘッダーには、Base64でエンコードされた、MobileEnvironment_Notificationロールを持つチーム・メンバーの名前とパスワードを含める必要があります。 OAuthでは、このヘッダーにアクセス・トークンを含める必要があります。 OAuthを使用している場合は、MobileEnvironment_Notificationロールのチーム・メンバーでもなければなりません。

  • Oracle-Mobile-Backend-ID: 基本認証を使用している場合は、このヘッダーを含める必要があります。 モバイル・バックエンドIDは、モバイル・バックエンドの「Settings」タブに表示されます。 OAuthでは、この情報はアクセス・トークンに含まれます。

通知を送信する際、ペイロードに次を自由に組み合せて指定できます。 統一されたペイロードが存在する場合はそれを使用し、テンプレートの場合はメッセージの順に使用します。

特定の受信者に通知を送信するには、ペイロードのコンテンツの後に引数を追加します。

  • ユーザーまたはユーザーのリストに送信するには、users引数を追加します。 ユーザーはfirstname:lastnameまたは電子メール・アドレスで定義できます。 複数のユーザーはトークンとして配列でリストされ、数の制限はありません。 次に例を示します。
    -d '{"message": "Hi! Our storewide sale is tomorrow.", "users": ["bob@acme.com", "sjones@xyz.net", "banana@peelme.com"]}' 
  • 同じモバイル・プラットフォーム上の全員に送信するには、platform (IOS、ANDROID、WINDOWSまたはWEB)を追加します。 次に例を示します。
    -d '{"message": "Hi! Our storewide sale is tomorrow.", "platform": "IOS"}'
    
  • 特定の通知プロバイダに送信するには、provider (APNS、GCMまたはFCM、WNSまたはSYNIVERSE)を追加します。 次に例を示します。
    -d '{"message": "Hi! Our storewide sale is tomorrow.", "provider": "APNS"}'
    
  • 特定のデバイスIDまたはデバイスIDのリストに送信するには、notificationTokens引数を追加します。 複数のIDがトークンとして配列でリストされ、数の制限はありません。 次に例を示します。
    -d '{"message": "Test of notifications feature.", "notificationTokens": ["2DD2D2-D2DDG44GD-GDGSDFZS3-3-3DFZSDFDS"]}'
将来の日付と時間の通知をスケジュールするには、sendOn引数を追加します。 次に例を示します。
-d '{"message": "Come to our discount sale today!", "sendOn": "2015-06-15T6:00Z"}'

HTTPレスポンス・ステータス・コード、リクエストおよびレスポンス本文のスキーマなどの詳細は、「Oracle Mobile Cloud ServiceのREST API」を参照してください。

デバイスIDの登録

通知デバイス登録APIによってモバイル・アプリのデバイスIDを登録でき、通知を送信する受信者アドレスとして使用できるようになります。 このAPIではユーザーとデバイスIDを関連付けることもできるため、ユーザー名を通知のターゲットとして使用することもできます。

デバイスID (notificationToken)を直接登録し、そのIDに直接通知を送信することができます。 このAPIを使用して任意のユーザーをデバイスIDと関連付けることもできます。

通知デバイス登録APIには次のエンドポイントが含まれます。
  • POST /mobile/platform/devices/register

  • POST /mobile/platform/devices/deregister

デバイスの登録時に、次のパラメータを含めます。
  • mobileClientパラメータは、3つのプロパティを持つバックエンドのクライアントを識別します:
    • id: GoogleまたはAppleのApp Storeによって割り当てられたアプリケーションID。 (これはApp-Keyとは異なります)。

    • version: 通知を受け取るモバイル・クライアントのバージョンです。現在は1.0です。

    • platform: "IOS"または"ANDROID"または"WINDOWS"または"WEB"(すべて大文字)

  • notificationProviderパラメータは、notificationTokenが使用されるサービスを定義: APNSまたはGCSまたはFCMまたはWNSまたはSYNIVERSE。

  • notificationTokenパラメータは、通知サービスがコールを送信するために必要なトークンを定義します。 このトークンは、特定のデバイスに関連付けられているモバイル・アプリケーションの特定のインスタンスを一意に識別し、通知を正しい受信者に送信するために使用されます。 必要に応じて16進形式でエンコードします。

  • オプションのuserパラメータは、提供されたユーザー名に装置IDを関連付けます。 userパラメータが含まれていない場合、デバイスIDは登録コール中にログインしているユーザーに関連付けられます。

    注意:

    異なるユーザー名を指定する場合、ログイン・ユーザーはMobileEnvironment_Notificationsロールのチーム・メンバーである必要があります。 この方法でユーザー名を登録しても、デバイス・レジストリのエントリは検証されません。 これによりユーザー名が重複する場合、通知は複数のユーザーに送信される可能性があります。 ユーザー名が一意であることが要件になる場合、アプリでそれを保証する必要があります。
この例では、デバイスIDがMyAppTokenのデバイスを登録します:
curl -v 
  -H "Authorization: Basic VGVzdE1vYmlsZVVzZXIyYzE4YWRiZjMyMDg0ZWZkOWQyODM0NjA1OGNmExampleAuthString="  
  -H "Oracle-Mobile-Backend-ID: 7cf06198-053e-4311-8186-cae145900d59" 
  -H "Content-Type:application/json" 
  -d '{"mobileClient": {"id": "MyClientac3d8baf1aa348b48d80e9b7fd026067","version": "1.0","platform": "IOS"},"notificationProvider":"APNS","notificationToken":"03767dea-29ac-4440-b4f6-75a755845ade","user":"JoeSmith"}' 
     http://www.fixitfast.com:8080/mobile/platform/devices/register
デバイスを登録するREST操作が正常に実行された場合、次のようなレスポンスになると予想されます。
Connected to fixitfast.com port (10.176.45.198) port 8080 (#0)
Server auth using Basic with user 'lucy'
POST /mobile/platform/devices/register/
Authorization: Basic VGVzdE1vYmlsZVVzZXIyYzE4YWRiZjMyMDg0ZWZkOWQyODM0NjA1OGNmExampleAuthString=
User-Agent: curl/7.33.0
Host: fixitfast.com:8080
Accept: application/json
Content-Type: application/json 
Oracle-Mobile-Backend-ID: 7cf06198-053e-4311-8186-cae145900d59
Content-Length: 32
upload completely sent off: 32 out of 32 bytes
HTTP/1.1 201 Created
レスポンスには、登録済デバイスのデバイスIDを含むJSONペイロードが含まれます。
{
  "id": "7cf06198-053e-4311-8186-cae145900d59",
  "user": "JoeSmith",
  "notificationProvider":"APNS",
  "notificationToken":"03767dea-29ac-4440-b4f6-75a755845ade",
  "mobileClient": {"id": "MyClientac3d8baf1aa348b48d80e9b7fd026067","version": "1.0","platform": "IOS"},
  "modifiedOn": "2016-05-25T14:58:16.373Z"
}
テキスト・メッセージ通知を送信

次の例では、通知REST APIを使用して簡単な通知をモバイル・バックエンドの全員に送信します。 上記のように、Authorizationヘッダーで送信される名前とパスワードは、必要な権限を持つチーム・メンバーである必要があります。

curl -X POST 
  -H "Authorization: basic bWNzOldlbGNvbWUxKg==" 
  -H "Accept: application/json" 
  -H "Content-Type: application/json; charset=UTF-8" 
  -H "Oracle-Mobile-Backend-ID:1d97542d-51d6-4f18-897f-35053cfdfd2d" 
  -d '{"message": "Hi! Our storewide sale is tomorrow."}' 
    http://www.FixItFast.com:8080/mobile/system/notifications/notifications/

通知が正常に送信されると、レスポンスは次の例のようになります。 作成された通知の本文はJSONになります。

Connected to FixItFast.com port (10.176.45.198) port 8080 (#0)
Server auth using Basic with user 'lucy'
POST /mobile/system/notifications/notifications/ HTTP/1.1
Authorization: Basic bWNzOldlbGNvbWUxKg==
User-Agent: curl/7.33.0
Host: newclothes.com:8080
Accept: application/json
Content-Type: application/json; charset=UTF-8
Oracle-Mobile-Backend-ID:1d97542d-51d6-4f18-897f-35053cfdfd2d
HTTP/1.1 201 Created

また、ステータス・コード400 (不正リクエスト)または401 (不正)を取得することもできます。

ユニファイ・ドペイロードを使用した通知の送信
統一ペイロードでは、通知REST APIを使用して、サポートされている通知プロバイダごとに異なるペイロードを指定できます。 servicesプロパティの下で、次のうち1つ以上を定義できます:
  • apnsペイロードは、APNS要件に準拠している必要があります。

  • gcmまたはfcmペイロードには、任意のJSONプロパティを含めることができます。

  • wnsペイロード・プロパティには、整形式のWNS payloadが含まれていなければなりません。

  • syniverseペイロード・プロパティには、SMSメッセージとして送信する文字列を含める必要があります。

注意:

ペイロード・テンプレートを使用して、コードを定義することなくプロバイダ特定のペイロードを送信できます。 詳細は、「ペイロード・テンプレートを使用した通知の送信」を参照してください。

以下は、FCMのペイロードを定義する簡単な例です。 FCMオブジェクトには、通知オブジェクトまたはデータ・オブジェクトのいずれかを含めることができます。 通知オブジェクトには、FCMのマニュアルに記載されているユーザー定義の一連のキーが定義されています。 データ・オブジェクトにはカスタム・キーと値のペアがあります。

通知オブジェクト:
{"notificationTokens": [ "xxxxx"],"payload": {"services": {"fcm": {"notification": {"title": "Sale On Now!","body": "50% off until Saturday"
        }
      }
    }
  }
}

データ・オブジェクト:

 "notificationTokens": [ "xxxxxx"],"payload": {"services": {"fcm": {"data": {"acme1": "value1","acme2": "value2"
        }
      }
    }
  }
}
ペイロード・テンプレートを使用した通知の送信
通知REST APIでペイロード・テンプレートを使用する場合は、入力した内容を使用して、サポートされている通知プロバイダごとにドライバ固有のペイロードを作成します。 デフォルトのペイロード・テンプレートには、次のオプションのパラメータが含まれています。
パラメータ 説明 データ型
title アラートのタイトル。 タイトルが指定されている場合は、bodyパラメータも必要です。 文字列 "Sale On Now!"
body アラートの本文。

bodyのみが指定されている場合、コンテンツはAPNSおよびFCMペイロードのalertプロパティの値として使用されます。

文字列 "50% off until Saturday"
badge 通知にバッジ付ける数。

Androidアプリケーションはバッジをサポートしていないため、ペイロードに番号が渡されません。 バッジ値を渡す必要がある場合、カスタム・データ・ペイロードの一部として渡すことができます。

数値 43
sound 通知とともに再生される音声ファイル。 APNS、WNS、およびFCMでは.wav形式のみがサポートされています。
  • APNSの場合は、ファイルがアプリ・バンドルに含まれている必要があります。

  • WNSの場合、ファイルはアプリ・パッケージに含まれている必要があります(ms-appx:///"というプレフィクスが自動的に追加されます)。

  • FCMの場合は、ファイルはどの場所にあっても構いません。

文字列 "alert.wav"
custom 任意の必要なカスタム・データ。 オブジェクト
{
  "acme1": "value1",
  "acme2": ["value2", "value3"]
}

以下の例は、FCMを使用して送信された、5つのパラメータすべてと結果のペイロードを含む通知を示しています。 FCMオブジェクトには、通知オブジェクトまたはデータ・オブジェクトのいずれかを含めることができます。 通知オブジェクトには、FCMのマニュアルに記載されているユーザー定義の一連のキーが定義されています。 データ・オブジェクトにはカスタム・キーと値のペアがあります。

これはデフォルトのテンプレートを指定します:
{
 "template": {
 "name" : "#default",
 "parameters": {
 "title":"this is the title",
 "body":"this is the body",
 "sound":"alert.wav",
 "badge": 5,
 "custom": 
{ "key1": "value1", "key2": "value2", "key3": [ "value3.1", "value3.2"] } 
}
 },
このペイロードは、以下の統一ペイロードと同じ方法で配信されます。 上記のように、Androidアプリはバッジをサポートしていないため、アプリは別の方法でbadge値を使用できます。 この例では、valueは文字列なので、key3の値は文字列に変換されることに注意してください。
FCMドライバ・ペイロード:
"fcm": {
 "notification": 
{ "title": "this is the title", "body": "this is the body", "sound": "alert.wav" } 
"data": 
{ "key1": "value1", "key2": "value2", "key3": "[ \"value3.1\", \"value3.2\"]" } 
}
予定されている通知の取消
スケジュールされた通知を取消するには、取り消す通知に割り当てられたIDを使用して、/mobile/system/notifications/notifications/{id}にDELETEを送信します。 この例では、通知IDは113455です。
curl -X DELETE 
  -H "Authorization: Basic bWNzOldlbGNvbWUxKg=="
  -H "Oracle-Mobile-Backend-ID:1d97542d-51d6-4f18-897f-35053cfdfd2d" 
  -H "Accept: application/json" 
  -H "Content-Type: application/json; charset=UTF-8" 
    http://www.fixitfast.com:8080/mobile/system/notifications/notifications/113455

通知のトラブルシューティング

通知の送信は非同期処理です。 通知の送信後、モバイル・デバイスに配信されるまで、通知はApple、GoogleまたはMicrosoftサーバーに数分間から数時間、最大で数日間保存される場合があります。 通知を配信できない場合でもエラー・メッセージが返されないことがあります。 通知が送信されると、通知を制御することはできませんが、これは一般的な通知の問題です:

  • セキュアな証明書が存在しない、失効済または正しい場所に置かれていない。

  • デバイスのネットワーク資格証明が登録された資格証明と一致しません。

  • コードに使用されるセキュリティ識別子は、Google、AppleまたはWindowsに登録した識別子と一致せず、AndroidマニフェストまたはiOS Xcodeプロジェクトに定義したものとも一致しません。

  • 不正な識別子がフォームに入力された。 たとえば、バックエンドに通知を登録し、APIキーを要求すると、代わりにアプリケーション・キーが入力されました。

  • APNSで、本番資格証明をアップロードしたが、クライアントの構成ではそれは開発の資格証明であると指定しているなど、本番と開発のフラグおよび資格証明が一致していない。

  • FCMおよびGCMで、APIキーまたはプロジェクト番号あるいは送信者IDが間違っている場合、ユーザーがデバイスで通知を無効化している可能性がある。

MCS そのデバイスに通知が送信され、通知プロバイダがそのデバイスIDが不良であると報告すると、自動的にデバイスの登録が解除されます。 これはいくつかの方法で発生します:
  • トークンの期限が切れている可能性が最も高いです。 デバイスのトークンは、プロバイダに応じて30日から90日間です。 モバイル・アプリは、MCSと通知プロバイダの両方を起動してアプリケーションを起動するたびに、通知トークンを再登録する必要があります。

  • ユーザーが端末からアプリを削除した

  • APIキーまたはMCSの証明書が期限切れになったか、またはGoogle/Appleから新しいAPIキーまたは証明書がリクエストされ、アップロードされなかった。

  • ユーザーはOSを再インストール/更新してからOSをリロードしてからアプリケーションを実行していません。

  • トークンは登録中に何らかの形でリングされました。

UIでの通知ステータスの確認

通知が正常に送られていることを確かめるには、モバイル・バックエンドの「Notifications」ページからアクセスできる「History」ペインを確認します。

スケジュールされた通知は「Scheduled」タブに表示されます。 送信された通知のリストを表示するには、「Sent」タブをクリックします。 表示されるはずの通知が表示されない場合には、「Check for Updates」をクリックします。

「History」ペインに表示されるステータスには、送信された通知の成功率が反映されます。 「History」ペインの各通知のステータスは左側の列の色によって、次のようにすぐにわかります。

  • 緑色は、AppleまたはGoogle(あるいはその両方)のネットワークに受け入れられたバッチ内の個々の通知が70%より多いことを意味します。

  • 黄色は、受け入れられたバッチ内の個々の通知が70%より少ないことを意味します。

  • 赤色は、バッチがMCSから正常に送信することに失敗したことを意味します。 ほとんどの場合、修正が必要な構成エラーがあります。 通知のトラブルシューティングを参照してください。

  • 青色は通知のバッチが現在送信されていることを意味します。 ほとんどの場合、青色インジケータは短い時間しか表示されません。

人気のあるモバイル・アプリケーションでは大量の受信者に送信されることからすると、100%の成功はありません。 たとえば、最近電話をなくしたユーザーに通知が宛てられると、AppleまたはGoogleネットワークはデバイスへの配送の通知を受け付けません。 デフォルトの警告しきい値は70%ですが、Notifications_DeviceCountWarningThreshold環境ポリシーで変更できます。

モバイル・バックエンドの「Notifications」ページからアクセス可能な「Device Manager」にも、モバイル・バックエンドのすべての登録済デバイスがデバイスID (通知トークン)とともにリストされます。 デバイスが表示されていない場合、ネットワーク・プロバイダによってデバイスID (通知トークン)が無効であり、登録解除するように指定されている可能性があります。 また、デバイスが60日以内に再登録されなかった場合は、レジストリから削除されます。 トラブルシューティングしやすいように、「Clear Registry」をクリックして、モバイル・バックエンドからすべての登録済デバイスを削除できます。

MCSログで、通知または通知バッチに関する追加情報があるかどうかいつでも確認できます。 サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「Administration」 > 「Logs」の順に選択します。 MCSで使用可能な診断ツールの詳細は、「診断」を参照してください

通知REST APIを使用した通知ステータスの確認

通知APIを使用して通知のステータスを確認できます。
GETmobile/system/notifications/notificationsに通知のIDで送信するか、status=問合せパラメータを使用します。 通知ステータスを確認することができます: NewScheduledSendingErrorWarning、またはSentです。 (通知が正常に送信されている必要があります。)
次の例では、スケジュールされた通知を確認します。
curl -i
-X GET 
-u team.user@example.com:Welcome1!
-H "Oracle-Mobile-Backend-ID: ABCD9278-091f-41aa-9cb2-184bd0586fce"
http://fif.cloud.oracle.com/mobile/system/notifications/notifications/?status=Scheduled
問合せが成功すると、レスポンスはJSONになり、検出された最初の1000個の通知が示されます。 limitおよびoffsetパラメータを使用して範囲を指定することができます。たとえば、limit=100&offset=400は通知400-499を返します。
{
  "items": [
   {                     
    "id": 1234,                     
    "tag": "Marketing",                     
    "message": "This is the alert message.",
    "status": "Sent",
    "notificationTokens": ["APNSdeviceToken"],
    "createdOn": "2014-04-02T12:34:56.789Z",
    "platformCounts": [
     {
       "platform": "IOS",
       "deviceCount": 1,
       "successCount": 1
      }
  ],
  "links": [
   {
     "rel": "canonical",
     "href": "/notifications/1234"
   },
   {
     "rel": "self",
     "href": "/notifications/1234"
   }
  ]
 },
 {
   "id": 1235,
   "tag": "System",
   "message": "Update required.",
   "status": "Sent",
   "processedOn": "2014-04-01T12:34:56.789Z",
   "notificationTokens": ["APNSdeviceToken"],
   "platformCounts": [                       
    {
     "platform": "IOS",
     "deviceCount": 1,
     "successCount": 1
    }
   ],
   "createdOn": "2014-04-03T58:24:12.345Z",
   "links": [
    {
     "rel": "canonical",
     "href": "/notifications/1235"
    },
    {
     "rel": "self",
     "href": "/notifications/1235"                       
    }
   ]
  }
 ],
  "hasMore": false
  "links": [
   {
    "rel": "canonical",
    "href": "/notifications?offset=0&limit=2"
   },
   {
    "rel": "self",
    "href": "/notifications?offset=0&limit=1000"
   }
  ]
}