概要
NCMB で Android 端末に対してダイアログプッシュというのができるみたいなのでやってみました
普通のプッシュは Android の上部通知バーが表示されるのに対してダイアログプッシュはその名の通りプッシュ受信時にダイアログを表示することができます
環境
- Android 4.0.4 (実機 : SH-01D)
- Eclipse 4.4.2
- NCMB.jar 1.5.3
事前準備
今回はこのサンプルを使って説明します
事前に必要になる作業
- NCMB の登録
- Google Developer Console で SenderId と APIキーの取得
- サンプルが動作する環境の作成
は実施しておいてください
サンプルが動作してとりあえず実機の Android でプッシュが受信できるところまでできればOKです
では、コーディングしていきます
コーディング
表示するダイアログの定義をする
AndroidManifext.xml に以下を追記します
<activity
android:name="com.nifty.cloud.mb.NCMBDialogActivity"
android:excludeFromRecents="true"
android:launchMode="singleInstance"
android:noHistory="true"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar">
</activity>
これは NCMB.jar に含まれている、Activityを指定しているだけです
<application>
タグ内に記載すればOKです
カスタムレシーバを作成する
com.example.android_ncmb_sample.utils.DialogPushReceiver を作成します
android.content.BroadcastReceiver
を継承してください
作成したら以下のように変更します
package com.example.android_ncmb_sample.utils;
import com.nifty.cloud.mb.NCMBDialogPushConfiguration;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class DialogPushReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getExtras().getString("com.nifty.Dialog").equals("1")) {
NCMBDialogPushConfiguration dialogPushConfiguration = new NCMBDialogPushConfiguration();
dialogPushConfiguration.setDisplayType(NCMBDialogPushConfiguration.DIALOG_DISPLAY_DIALOG);
NCMBPush.dialogPushHandler(context, intent, dialogPushConfiguration);
}
}
}
基本は onReceive を変更すればOKです
ダイアログフラグがONのときにだけダイアログプッシュを表示するようにします
カスタムレシーバの定義を追記する
AndroidManifext.xml に以下を追記します
<receiver android:name="com.example.android_ncmb_sample.utils.DialogPushReceiver" >
<intent-filter>
<action android:name="com.example.android_ncmb_sample.utils.DIALOG" />
</intent-filter>
</receiver>
<receiver>
タグ内に存在しているandroid:name
には作成したダイアログプッシュ用のレシーバを定義します
<action>
タグ内に存在しているandroid:name
には「好きな文字列を指定してください」
ここは何でもOKです
プッシュを送信する際にaction
というパラメータを指定するのですが、そのパラメータと<action>
タグで指定した文字列にマッチする reciever が自動でコールされる仕組みになっています
サンプルではクラス名っぽいものを指定していますが、何でもOKです
動作確認
ここまでできたら動作確認してみます
まず実機をつないで Eclipse 上でアプリを起動しましょう
ここは普通に起動すると思います
起動が完了できて Logcat にもログができることを確認したらアプリをバックグラウンドにしてプッシュを送信してみましょう
プッシュを送信する
プッシュの送信は NCMB のコンパネから送信します
ポイントは1つ
プッシュを登録する画面で「Android 端末に送信する」のチェックをONにします
このときに「アクション」と「ダイアログ」を以下のようにします
- アクション・・・com.example.android_ncmb_sample.utils.DIALOG
- ダイアログ・・・チェックをON
を必ず設定してください
ちょっと前に説明しましたが、ここで指定したアクションと AndroidManifest.xml の<action>
タグ内に記載した文字列がマッチして初めてカスタムレシーバがコールされます
プッシュを受信する
これでプッシュを登録し受信すると以下のように表示されると思います
うまく表示されない場合は
- カスタムレシーバがそもそもコールされていない
- コールされているけど、Dialog が有効になっていない
あたりを疑ってください
トラブルシュートは実機を接続しながら Logcat とにらめっこすれば、基本は解決できると思います
最後に
割りと簡単にできました
が、たぶんいろいろと事前に触っていて仕組みの流れを理解していたからだと思います
初見だと公式ドキュメントだけだと難しいかもしれないです
0 件のコメント:
コメントを投稿