LoginSignup
26
27

More than 5 years have passed since last update.

ニフティクラウドmobile backend(mBaaS)でお手軽にAndroidのプッシュ通知を実装する

Last updated at Posted at 2014-03-05

ニフティクラウドmobile backendとは?

mBaaS?

MBaaS で巨人の肩に乗る #awscasual // Speaker Deckで紹介されているように、クラウドの新しいサービス群である「BaaS」がアメリカでは旺盛です。

ニフティでも各種クラウドサービスを提供していますが、2013/9末からスマートフォンアプリの特化型クラウド「ニフティクラウド mobile backend」mBaaS(mobile Backend as a Service)(※以下、mBaaSと呼びます)を提供しています。

mBaaS(mobile Backend as a Service)とは、スマートフォンアプリの開発で必要なサーバーとサーバープログラミングをお手軽に肩代わりしてくれるクラウドサービスです。データストア、ファイルストア、会員管理、SNS連携などを用意しているのですが、わりとサーバーサイドの実装が面倒な「プッシュ通知」も提供しています。

今回は、プッシュ通知を例にとって、mBaaSでプッシュ通知を実装するための手順を紹介し、mBaaSの「お手軽感」を感じ取っていただければと思います。

どうお手軽なの?

例えばAndroidでプッシュ通知を実装するには、GCM(Google Cloud Messaging)に対して自前のサーバーからプッシュ通知をリクエストするサーバープログラムの用意が必要です。mBaaSを使えば、GCMのAPIキーを設定するだけでサーバープログラムの部分は肩代わりしてくれますし、プッシュ通知を送るためのコントロールパネルも提供されるので、わざわざプッシュ通知を送るためだけにサーバーまわりの面倒な用意や作業の必要がありません。

  • mBaaS初期設定
  • mBaaSで提供されているSDKをセットアップ
  • プッシュ通知に対応したアプリケーションの改変
  • アプリケーションのアップデート
  • mBaaSからプッシュ通知配信

といった具合の手順を踏んでプッシュ通知の配信が実装できます。下記チュートリアルで手順を追って説明します。

プッシュ通知(for Android)チュートリアル

概要

Push通知は作成したアプリケーションが非アクティブの場合でも新しいメッセージやイベントを通知します。Android端末上でPush通知を受信した時、アプリケーションアイコンと、メッセージをステータスバーに表示します。アプリケーションユーザがPush通知をタップした場合、それらはアプリケーションに送られます。Push通知は全てのユーザにブロードキャスト送信することも、マーケティングキャンペーンのためにユーザグループの一組や特定の個人に送信することが可能です。NCMBライブラリはニフティクラウドmobile backendとGCM(Google Cloud Messaging)とのインターネット接続によって、バックグラウンドサービスとして動作するPush通知を提供しています。この方法ではGCMを使用するためのアプリケーションキーとクライアントキーとセンダーIDが必要です。

初期設定

このチュートリアルではNCMB Android SDKを利用します。このため最新のSDKを入手しインポートする必要があります。SDK導入手順がmBaaSクイックスタートに記載されています。Push通知を実現するためには、gcm.jarのインポートと、mobile backendでの設定が必要になります。gcm.jarについてはAndroid SDK Managerからダウンロードしてください。Push通知を実現するために必要な、mobile backendの設定を以下に示します。

初期設定

左メニューからアプリ設定をクリックし、表示された画面からプッシュ通知欄のプッシュ通知の許可を「許可する」に設定し、保存するボタンを押下します。またAndroidでのPush通知を有効にするため、APIキー欄にはGCMのAPIキーを設定します。GCMのAPIキーはGoogleのAPI Consoleサイトで確認できます。

GCM登録

Push通知を使用するためには、mobile backendにあなたのアプリケーションを登録しなけばなりません。以下のXMLを、AndroidManifest.xmlファイルのタグの直前に追加して下さい。

AndroidManifest.xml
<service android:name="com.nifty.cloud.mb.NCMBGCMIntentService" />
<receiver
    android:name="com.nifty.cloud.mb.NCMBGCMBroadcastReceiver"
    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="com.sample.pushsample" />
    </intent-filter>
</receiver>

パーミッション設定

次に、あなたのアプリケーションにPush通知を表示するためのパーミッションを付与しなければなりません。以下のXMLを、AndroidManifest.xmlファイルのタグの直前に追加してください。

AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Push通知時に端末を振動させたい場合はandroid.permission.VIBRATEを設定 -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.sample.pushsample.permission.C2D_MESSAGE" />
<permission android:name="com.sample.pushsample.permission.C2D_MESSAGE"android:protectionLevel="signature" />

mobile backendのAPIキー追加

あなたのアプリと、mobile backendが連携するために、APIキーのやりとりが必要になります。あなたのアプリケーションクラスのonCreateメソッドに次の処理を追加して下さい。

yourappclass.java
NCMB.initialize(this, "YOUR_APP_ID", "YOUR_CLIENT_KEY");

「YOUR_APP_ID」と「YOUR_CLIENT_KEY」についてはmobile backendでアプリを作成した際に表示される、アプリケーションキーとクライアントキーを設定するようにして下さい。

Push通知を有効にする

最後に、あなたのアプリケーションで通知する準備ができたことをmobile backendに知らせる必要があります。Push通知を始める最も単純な方法は、デフォルトとして全Push通知を使用するためのActivityを明記することです。あなたのアプリケーションクラスのonCreateメソッドに次の処理を追加して下さい。

yourappclass.java
final NCMBInstallation installation = NCMBInstallation.getCurrentInstallation();
installation.getRegistrationIdInBackground("SENDER_ID", new RegistrationCallback(){
    @Override
    public void done(NCMBException e) {
        if (e != null) {
            // 失敗
        } else {
            // 成功
            // 端末登録の実行
            try {
                installation.save();
            } catch(NCMBException e2) {
                e2.printStackTrace();
            }
        }
    }
});
NCMBPush.setDefaultPushCallback(this, MainActivity.class);

「SENDER_ID」についてはGCM(Google Cloud Messaging)のProject IDを設定するようにして下さい。GCMのProject IDについてはGoogleのAPI Consoleサイトで確認できます。

アプリケーションのアップデート

これらの手順でmBaaSのプッシュ通知に対応したコードをビルドして、ユーザに配布されているアプリケーションをアップデートしてもらいましょう。アップデート後にアプリケーションが起動されると、先ほど改変したonCreateメソッドが呼ばれた際に、ユーザの端末がmBaaSに登録され、mBaaSからプッシュ通知を配信する準備が整います。

ダッシュボードからプッシュ通知を送信する

mBaaSのダッシュボード>プッシュ通知>新しいプッシュ通知から作成、送信できます。

ダッシュボード>プッシュ通知

送信したいプッシュ通知の文言を設定、作成すると、送信されます。

ダッシュボード>プッシュ通知

いかがでしたか?うまく端末にプッシュ配信できたでしょうか。

さらに、配信端末の絞込や配信日次指定、再送信設定など、細かな設定を知りたい場合はダッシュボードの使い方:プッシュ通知を参照して下さい。

26
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
27