ヘッダーをスキップ
Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発
2.1.0
E60836-01
  目次へ移動
目次

前
 
次
 

24 通知の有効化と使用方法

この章では、MAFアプリケーションにおけるプッシュ通知メッセージの登録、およびそれらの処理方法を説明します。

この章の内容は次のとおりです。

24.1 プッシュ通知の概要

プッシュ通知は、サーバーなどの外部ソースからモバイル・デバイス上のアプリケーションに送信される通知です。これらは、アプリケーションの状態とユーザー設定に応じて、アラート・メッセージやバナーとして表示されます。図24-1は、iOSデバイスにおけるプッシュ通知アラートを示しています。

図24-1 プッシュ通知

この図は周囲のテキストで説明しています

通知を受信したエンド・ユーザーは、アプリケーションを起動するか、その通知を無視できます。この場合、アプリケーションはアクティブ化されません。通知のアラート・メッセージとともに、短く特徴的な音が鳴る場合もあります。

プッシュ通知を受信するには、アプリケーションを通知サービスに登録する必要があります。登録が成功すると、通知サービスからアプリケーションにトークンが発行されます。アプリケーションでは、このトークンを(リモート・サーバー上の)プロバイダと共有します。これにより、プロバイダから、通知サービスを通じてアプリケーションに通知を送信できるようになります。MAFでは、アプリケーションによって提供された登録構成を使用して、そのアプリケーションのかわりに登録を行います(第24.2項「MAFアプリケーションに対するプッシュ通知の有効化」を参照)。登録は、MAFアプリケーションが起動するたびに、トークンの有効性を保証する目的で行われます。登録が成功すると、MAFでは、プラットフォーム固有の通知サービスから取得したトークンをプロバイダと共有します。iOSの場合、この通知サービスはApple Push Notification Service (APNs)です。Google Cloud Messaging (GCM) for Androidでは、Androidデバイスにインストールされたアプリケーション用の通知サービスが提供されます。

24.1.1 アプリケーションの状態に応じたMAFアプリケーションによる通知の表示

MAFアプリケーションでは、その状態にかかわらずプッシュ通知を受信できます。これらのメッセージは、アプリケーションがフォアグラウンドで実行されていなくても表示される場合があり、その表示形式はMAFアプリケーションの状態とユーザー設定によって異なります。表24-1では、iOSオペレーティング・システムで、MAFアプリケーションの状態に応じて、どのようにプッシュ通知が処理されるかを説明します。

表24-1 iOSデバイスにおけるプッシュ通知の処理

状態 アクション

MAFアプリケーションはインストールされているが、実行されていない。

通知メッセージが登録済の通知スタイル(なし、バナーまたはアラート)で表示されます。ユーザーがメッセージをタップ(バナー・スタイルの通知の場合)するか、アクション・ボタンをタッチ(メッセージがアラートとして表示される場合)すると、MAFアプリケーションが起動し、アプリケーション通知ハンドラが呼び出されます。

MAFアプリケーションがバックグラウンドで実行されている。

通知メッセージが登録済の通知スタイル(なし、バナーまたはアラート)で表示されます。ユーザーがメッセージをタップ(バナー・スタイルの通知の場合)するか、アクション・ボタンをタッチ(メッセージがアラートとして表示される場合)すると、MAFアプリケーションが起動し、アプリケーション通知ハンドラが呼び出されます。

MAFアプリケーションがフォアグラウンドで実行されている。

通知メッセージは表示されません。アプリケーション通知ハンドラが呼び出されます。


iOSおよびAndroidプラットフォームでは、アプリケーションがフォアグラウンドで実行されていない場合、そのアプリケーションに関連付けられているすべてのプッシュ通知メッセージが、iOS Notification CenterやAndroidデバイス上の通知ドロワーなど、特定の場所に格納されます。

24.2 MAFアプリケーションに対するプッシュ通知の有効化

次のタスクを実行することで、プッシュ通知を有効にできます。

  1. 図24-2に示すとおりに、maf-application.xml概要エディタの「デバイス・アクセス」ページで「プッシュ通知」を選択し、MAFアプリケーションでプッシュ通知を受信できるようにします。


    注意:

    デフォルトでは、MAFアプリケーションはプッシュ通知を許可しません(また、いずれのデバイス・タイプのデバイス・アクセスも許可しません)。

    図24-2 プッシュ通知の許可

    この図は周囲のテキストで説明しています
  2. アプリケーション・コントローラ・プロジェクトで、アプリケーション・ライフサイクル・イベント・リスナー(ALCL)・クラスを登録します。詳細は、第3.3項「アプリケーション機能の表示プロパティの設定」および第11章「MAFアプリケーションでのライフサイクル・リスナーの使用方法」を参照してください。

  3. ALCLにoracle.adfmf.application.PushNotificationConfigインタフェースを実装します。このインタフェースにより、プッシュ通知サービスに正常に登録するために必要な構成が提供されます。

    PushNotificationConfigインタフェースのgetNotificationStyleおよびgetSourceAuthorizationIdメソッドをオーバーライドおよび実装します。getNotificationStyleメソッドにより、アプリケーションを登録する通知スタイルを指定できます。getSourceAuthorizationIdメソッドを使用すると、MAFアプリケーションへのメッセージの送信を許可されたアカウントのGoogleプロジェクト番号を入力できます。詳細は、Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスを参照してください。

  4. アプリケーション・コントローラ・プロジェクトで、プッシュ通知イベントを処理するプッシュ通知イベント・リスナー・クラス(NativePushNotificationListenerなど)を作成します。このクラスには、イベント・リスナーを定義するoracle.adfmf.framework.event.EventListenerインタフェースを実装する必要があります。oracle.adfmf.framework.event.EventListenerインタフェースの詳細は、Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスを参照してください。

    通知イベントに登録して通知イベントを受信するには、onOpenonMessageおよびonErrorメソッドをオーバーライドおよび実装します。プッシュ通知サービスへの登録が成功すると、MAFでは、アプリケーション開発者がプロバイダと共有する必要がある登録トークンを使用して、onOpenメソッドをコールします。通知サービスへの登録時にエラーが発生した場合は、プッシュ通知サービスにより戻されるAdfExceptionとしてカプセル化されたエラーを使用して、onErrorメソッドが呼び出されます。

    MAFでは、アプリケーションが通知を受信するたびに、通知ペイロードを使用してonMessage(Event e)メソッドをコールします。Eventオブジェクトを使用すると、通知ペイロードおよびアプリケーションの状態に関する有用な情報を取得できます。通知ペイロードを取得するには、Event.getPayloadメソッドを使用します。通知時のアプリケーションの状態を取得するには、Event.getApplicationStateメソッドを使用します。詳細は、Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスEventクラスに関する項を参照してください。

  5. ALCLクラスのstartメソッド内にある、ネイティブ・プッシュ通知イベントのソースを表すEventSourceオブジェクトを取得します。

    EventSource evtSource =
    EventSourceFactory.getEventSource(EventSourceFactory.NATIVE_PUSH_NOTIFICATION_
                                                                     REMOTE_EVENT
                                                                    _SOURCE_NAME);
    
  6. プッシュ通知イベント・リスナー・クラスのオブジェクトを作成し、イベント・ソースに追加します。

    evtSource.addListener(new NativePushNotificationListener());
    

MAFサンプル・アプリケーション(PushDemoおよびPushServer)によって、プッシュ通知の処理方法を示します。これらのサンプル・アプリケーションは、開発コンピュータ上のjdev_install/jdeveloper/jdev/extensions/oracle.maf/SamplesディレクトリのPublicSamples.zipファイル内にあります。

24.3 プッシュ通知ペイロードに関する必知事項

MAFでは、JSON形式のペイロードに対して、次のキーを尊重します。

  • alert: 通知プロンプトに表示されるテキスト・メッセージ。

  • sound: 通知を受信したときに再生されるサウンド。

  • badge: iOSのアプリケーション・アイコンに表示する番号。


    注意:

    Androidでは、ペイロードをキーと値のペアを持つJSONオブジェクトにすることができます。GCMサーバーではアプリケーションに値を送信する前に、文字列以外の値を文字列に変換するため、値は常に文字列化されます。APNでは値のタイプが保持されるため、これは当てはまりません。詳細は、『Google Cloud Messaging』の「Implementing GCM Server」で、dataメッセージ・パラメータの説明を参照してください。このドキュメントは、Android開発者のWebサイト(http://developer.android.com/index.html)またはAndroid SDKドキュメントから入手できます。