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
関連記事
-
プロローグ:ジオの奇妙な冒険
2010年! それは位置ゲーとジオメディアの発展が起業家の思想と生活を変えた時代 …
-
おまけ:本当は大変なAndroid開発
スクールで作ったapkファイルがあれば、「新規で」アプリリリースするなら簡単。 …
-
4日目の前日:ところで駅コレのAndroid版って
そもそも今回れさくがAndroidアプリ教室に通っている理由は、「駅コレのAnd …
-
APKファイル署名のデッドロック?
Androidアプリリリース直前の段階で最大の疑問。 【課題】 大昔に「署名なし …
-
いよいよ本番:eclipse上でプロジェクトをコピーする
クラウドナインアップス卒業後も先生に質問しまくったりサンプルコード頂いたりしまく …
-
1日目:計算機を作ろうとしたらUSBドライバの勉強が進んだの巻
~前回までのあらすじ~ AndroidSDKは重い。 AndroidSDKは複雑 …
-
最終回:本当に5日間でAndroidアプリが作れてリリースできた。
というわけで、5日間でできるAndroidアプリ開発も今回で最終回を迎えました。 …
-
2日目:スタバで授業の復習をしたら駅コレAndroidアプリができてしまった(後編)
~これまでのあらすじ~ スタバでスタバなうを作った。 さて、この勢いでもっと何か …
-
3日目:アトム・ハート・ファーザー~カメラアプリを作るッ!
あ…ありのまま 今 起こった事を話すぜ! 「AndroidManif …
-
2日目:スタバで授業の復習をしたら駅コレAndroidアプリができてしまった(前編)
クラウドナインアップスのAndroidアプリ教室、2日目です。 今日はデータの読 …