Androidアプリにプッシュ通知を実装する
運営から限定イベントのお知らせが届いたり、新着ニュースが届いたり。
そんな通知をアプリに送る機能が、プッシュ通知機能。
iOSやAndroidの仕様に合わせてサーバに通知を送信する機能を実装し、
通知を受信する機能をアプリ側に実装する。
そんな作業が必要。
大変。
そんな面倒な部分を引き受けてくれるmBaaSのひとつにニフティクラウドのmBaaSがあります。
mBaaSは「mobile Backend as a Service」の略。
「モバイル系サービスを裏っかわで支えまっせ」ってことです。
これを使ってプッシュ通知機能を作ると、サーバ側の実装は不要。
っていうかサーバ要らない。
そしてmBaaSが用意してくれているSDKをアプリに組み込めば、もう完成。
じゃあ通知はどうやって送るの?
プッシュ通知作成や送信も、mBaaSが管理画面を用意してくれてます。
これは助かります!
という訳で、最近プッシュ通知機能を実装したAndroidアプリを作るお仕事をしたので、そのまとめ。
大きな流れ
1.Google開発者支援サイトでAndroidにプッシュ通知送るためのAPIキーを取得。
2.そのAPIキーをニフティクラウドのmBaaSに設定。
3.そのAPIキーをAndroidアプリに設定
1.GoogleのAPIキーを取得
Google Developers Consoleに入ります。
https://console.developers.google.com/
「プロジェクトを作成」を押すとポップアップが出るので、プロジェクト名を入れます。
プロジェクトIDは自動で表示されます。
プロジェクト一覧から作成したプロジェクトを選択して、左フレームの「API」を押します。
いろんなAPIが出ています。
「Google Cloud Messaging for Android」がプッシュ通知で使われるAPIなので、これを選びます。
選ぶと「有効なAPI」ということで上の方に表示されます。
「Google Cloud Messaging for Android」の右の「ステータス」を「ON」にします。
次に左フレームの「認証情報」を開きます。
「新しいクライアント ID を作成」を押すとポップアップが上がります。
一番左の「サーバーキー」を押します。
次のポップアップは空欄のまま何もしないで「作成」を押すと、APIキーが表示されます。
2.APIキーをmBaaSに設定
ニフティクラウドmBaaSのコンソールにアクセスします。
https://console.mb.cloud.nifty.com/
「設定」の「プッシュ通知」を開きます。
「プッシュ通知の許可」を「許可する」にして保存。
そして「APIキー」に先程取得したGoogleのAPIキーを入れて保存します。
「アプリ設定」の「基本」を開くと、「アプリケーションキー」と「クライアントキー」ができています。
これをアプリに埋め込むことになります。
3.APIキーをAndroidアプリに設定
ニフティクラウドmBaaSのコンソールにアクセスします。
https://console.mb.cloud.nifty.com/最初のアクセス時にアプリ名入力欄が出るので、素敵なアプリ名を入れます。
次にSDKをダウンロードします。
プッシュ通知を受け取って、端末の画面にポップを出す機能があります。
2015.1.31現在の直リンクはこちら
http://mb.cloud.nifty.com/assets/sdk/android/NCMB_latest.zip
そう!
あのNCMB.jarです!
伝説の!
「こっ、これが噂のNCMB!!」
「これは”NiftyCloudMBaas”の略だったんだよー!」
「なっ、なんだってーーー!!!」
まあ要するにSDKです。
このSDKを開発環境に放り込みましょう。
私の場合Windowsでeclipse使っているので「libsフォルダ」の中に放り込みます。
C\android_workspace\test1\libs\NCMB.jar
こんな感じですかね。
eclipseを立ち上げて、左フレームのlibsの下にNCMB.jarが出てくればOK。
見えない場合はeclipse再起動すると見えます。(お約束)
そしてこの図の通りAndroidManifest.xmlを開きます。
これをAndroidManifest.xmlのの直前に記述。
<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” />
<category android:name=”<リバースドメイン>” />
</intent-filter>
</receiver>
そしてこれをAndroidManifest.xmlファイルの
<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />
<uses-permission android:name=”android.permission.GET_ACCOUNTS” />
<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” />
<permission android:name=”<リバースドメイン>.permission.C2D_MESSAGE” android:protectionLevel=”signature” />
<uses-permission android:name=”<リバースドメイン>.permission.C2D_MESSAGE” />
今度はMainActivity.javaを開きます。
先頭のimportにはこれらを記述。すでに自分のアプリ用に記述済みのがあれば、それは書かずにダブらないように。
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import java.util.*;
import com.nifty.cloud.mb.*;
import android.app.AlertDialog;
MainActivity.javaのonCreateメソッドにこのように書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
NCMB.initialize(this, "<mBaaSのアプリケーションキー>", "<mBaaSのクライアントキー>"); final NCMBInstallation installation = NCMBInstallation.getCurrentInstallation(); installation.getRegistrationIdInBackground("<Googleに登録したプロジェクト番号>", 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); |
※<Googleに登録したプロジェクト番号>は「プロジェクトID」ではなく「プロジェクト番号」の方です。
これで完了!
速い!
あとはmBaaSの「プッシュ通知」画面からプッシュ通知を送れてしまいます!
そして今回の記事の感想。
WordPressでコードを含めた記事を書くの大変。
「コードタグ」なんてのがあるのに、これ使ってもタグのエスケープとかやってくれない。
インデントすら無視する。
表示めちゃくちゃ。
なのでpreタグとhrタグで視認性を上げるアナログ手法に。
コード含めた記事を書くならQuiitaの方がいいのかも。
adpc
adpc
関連記事
-
5日目:クラウドナインアップスAndroid教室最終日
一部で好評! 八幡山ってどんなところよ?シリーズ。 京王線の八幡山駅を出て左に進 …
-
最終回:本当に5日間でAndroidアプリが作れてリリースできた。
というわけで、5日間でできるAndroidアプリ開発も今回で最終回を迎えました。 …
-
0日目:Androidアプリ開発環境をMacに設定しかけて途中からWindowsに設定する
~前回までのあらすじ~ 「ちょっと!蕎麦の出前まだなの?」 「すみませんねェ、今 …
-
2日目:スタバで授業の復習をしたら駅コレAndroidアプリができてしまった(前編)
クラウドナインアップスのAndroidアプリ教室、2日目です。 今日はデータの読 …
-
1日目:計算機を作ろうとしたらUSBドライバの勉強が進んだの巻
~前回までのあらすじ~ AndroidSDKは重い。 AndroidSDKは複雑 …
-
APKファイル署名のデッドロック?
Androidアプリリリース直前の段階で最大の疑問。 【課題】 大昔に「署名なし …
-
3日目:アトム・ハート・ファーザー~カメラアプリを作るッ!
あ…ありのまま 今 起こった事を話すぜ! 「AndroidManif …
-
リリース前に:apkとapkとKeyStoreとzipalign
クラウドナインアップスでの授業も終わり、なんだかアプリが作れてしまいました。 こ …
-
4日目:地図アプリを作る~人生の位置情報を求めて~
「そもそも八幡山ってどんなところよ?」 そんな声が聞こえてきそうです。 こんなと …
-
4日目の前日:ところで駅コレのAndroid版って
そもそも今回れさくがAndroidアプリ教室に通っている理由は、「駅コレのAnd …