Remote Notification の組み込み

Remote Notification

Remote Notification を利用する場合、以下の AndroidManifest に追加で設定しなくてはなりません。

  • パーミッションの追加
  • さらに以下を設定します。{パッケージ名} はアプリのパッケージ名です。

  • Remote Notification 受信用の Receiver と Service を設定します。

上記設定で Remote Notification を受け取ることができるようになりました。

ここまでの AndroidManifest.xml の設定例は以下になります。

 

Remote Notification の送信テスト

Mobage Developers Japan より、リモート通知予約機能からリモート通知の送信を試すことができます。以下のドキュメントに従って、予約してみてください。

https://docs.mobage.com/display/JPSA/How+to+use+the+Remote+Notificatio+Reservation_ShellApp

RemoteNotification の受信側のカスタマイズ方法

ここから先の内容は Java や Android SDK に触れたことのある上級者向けの解説になります。Android アプリの状態には以下の 3 つの状態が存在します。

  • アプリケーションがフォアグラウンドの場合
    • アプリがユーザーに見えている状態になります
  • アプリケーションがバックグラウンドの場合
    • アプリがユーザーには見えていないが、アプリは起動している状態になります
  • アプリケーションが起動していない場合
    • アプリが完全に起動していない場合になります

上記の状態ごとに通知された時の動作を記載していきます。(ステータスバーに通知される通知の内容をカスタマイズする方法も後述します)

アプリケーションがフォア・バックグラウンドの場合の通知受け取り時の動作をカスタマイズする方法

デフォルトの挙動としてはステータスバーに通知が行われますが、Remote Notification 受信時の動作をカスタマイズしたい場合、RemoteNotification.setRemoteNotificationListener() にリスナーを登録することで、受信した Remote Notification を受け取り任意の動作を行うことができます。

リスナーに null 以外を登録した場合、デフォルトのステータスバー通知動作は行われなくなります。null を指定した場合は、通常通りステータスバーへの通知が行われます。

アプリケーションがフォアグラウンドの時に iOS と同様に Remote Notification の通知を行わない場合には、以下のように Activity の onPause/onResume にてリスナーを登録・解除します。

 

フォアグラウンド状態の時は、onResume メソッド内で RemoteNotification.setRemoteNotificationListener() にリスナーを登録することで、受信した Remote Notification を受け取り任意の動作を行うことができます。

バックグラウンド状態の時は、onPause メソッド内で RemoteNotification.setRemoteNotificationListener() にリスナーを登録することで、受信した Remote Notification を受け取り任意の動作を行うことができます。

 

アプリケーションが起動していない場合の通知受け取り時の動作をカスタマイズする方法

 

デフォルトの挙動としてはステータスバーに通知が行われますが、Remote Notification 受信時(通知タップ時ではなく、通知受信時になります)の動作をカスタマイズしたい場合、Application クラスの onCreate()に RemoteNotification.setRemoteNotificationClient()  でリスナーを登録することで、受信した Remote Notification を受け取り任意の動作を行うことができます。Application クラスの定義の仕方から説明していきます。(作成されたことのある方は読み飛ばして結構です)

上記 RemoteNotificationClient#handleMessage() にて true を返した場合、デフォルトのステータスバー通知や setRemoteNotificationListener() にて設定したリスナーの呼び出しは行われなくなります。false を返した場合、ステータスバーへの通知もsetRemoteNotificationListener() で設定したリスナーの呼び出しも維持されます。

Application クラスの定義

まずは、Application クラスを継承したクラスを新たに定義し、定義した onCreate メソッドに上記の RemoteNotification.setRemoteNotificationClient() を記載する必要があります。

新しい Application クラスを定義するには、Eclipse の Package Explorer 上で src/com.example.shellappsdksample の上で右クリックし、メニューから 「New」 -> 「Class」を選択します。

以下の様な、「New Java Class」ダイアログが表示されますので、Name に適切な名前を入力し、「Browse...」ボタンをクリックします。


以下の様な「Superclass Selection」ダイアログが表示されますので、Choose a type: に「Application」と入力し、「Matching items:」から「Application - android.app」を選択して「OK 」ボタンをクリックします。

「New Java Class」ダイアログに戻ってきますので、「Finish」ボタンをクリックします。Package Explorer 上で、以下のように SampleApplication.java が追加されたことを確認してください。

あとは、SampleApplication.java で onCreate メソッドをオーバーライドして、RemoteNotification.setRemoteNotificationClient() を記載してください。以下に実装例を記載します。

Application クラスの定義に伴う AndroidManifest.xml の編集

Application クラスを継承したクラスを新たに定義した場合、それを有効にするために AndroidManifest.xml の application タグの属性に android:name="com.example.shellappsdksample.SampleApplication" のように絶対パス(FQCN)で android:name 属性の追記を行います。

ステータスバーに通知される通知内容をカスタマイズする場合

デフォルトで行われるステータスバー通知の内容をカスタマイズしたい場合、「アプリケーションが起動していない場合の通知受け取り時の動作をカスタマイズする方法」で作成した Application クラスの onCreate() にて RemoteNotification.setRemoteNotificationClient() に設定したコールバック内で tweakNotification をオーバーライドしたメソッドで設定することができます。

実際に Application クラスに実装した例は以下になります。

 

 

更新履歴

  • 2015/02/05
    • 新規作成
 

 

 

 

PREVIOUS

テンプレートの利用による Shell App SDK for Android の組み込み (Android Studio)

NEXT

In App Billing の組み込み