れさくのブログ

れさくのブログ

*

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/

「プロジェクトを作成」を押すとポップアップが出るので、プロジェクト名を入れます。
0プロジェクトIDは自動で表示されます。

プロジェクト一覧から作成したプロジェクトを選択して、左フレームの「API」を押します。
いろんなAPIが出ています。
「Google Cloud Messaging for Android」がプッシュ通知で使われるAPIなので、これを選びます。
選ぶと「有効なAPI」ということで上の方に表示されます。
2「Google Cloud Messaging for Android」の右の「ステータス」を「ON」にします。

次に左フレームの「認証情報」を開きます。
「新しいクライアント ID を作成」を押すとポップアップが上がります。
1一番左の「サーバーキー」を押します。

次のポップアップは空欄のまま何もしないで「作成」を押すと、APIキーが表示されます。


2.APIキーをmBaaSに設定

ニフティクラウドmBaaSのコンソールにアクセスします。
https://console.mb.cloud.nifty.com/

「設定」の「プッシュ通知」を開きます。
4「プッシュ通知の許可」を「許可する」にして保存。
そして「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

解凍すると中にはファイルが一枚。
3NCMB.jarです。

そう!
あのNCMB.jarです!
伝説の!
「こっ、これが噂のNCMB!!」
「これは”NiftyCloudMBaas”の略だったんだよー!」
「なっ、なんだってーーー!!!」

まあ要するにSDKです。
このSDKを開発環境に放り込みましょう。

私の場合Windowsでeclipse使っているので「libsフォルダ」の中に放り込みます。

C\android_workspace\test1\libs\NCMB.jar

こんな感じですかね。

eclipseを立ち上げて、左フレームのlibsの下にNCMB.jarが出てくればOK。
見えない場合はeclipse再起動すると見えます。(お約束)
5そしてこの図の通り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;

6

MainActivity.javaのonCreateメソッドにこのように書きます。




※<Googleに登録したプロジェクト番号>は「プロジェクトID」ではなく「プロジェクト番号」の方です。

これで完了!
速い!

あとはmBaaSの「プッシュ通知」画面からプッシュ通知を送れてしまいます!

そして今回の記事の感想。
WordPressでコードを含めた記事を書くの大変。
「コードタグ」なんてのがあるのに、これ使ってもタグのエスケープとかやってくれない。
インデントすら無視する。
表示めちゃくちゃ。
なのでpreタグとhrタグで視認性を上げるアナログ手法に。
コード含めた記事を書くならQuiitaの方がいいのかも。

 - 5日間でできるAndroidアプリ開発

adpc

adpc

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  関連記事

5日目:クラウドナインアップスAndroid教室最終日

一部で好評! 八幡山ってどんなところよ?シリーズ。 京王線の八幡山駅を出て左に進 …

unnamed
APKファイル署名のデッドロック?

Androidアプリリリース直前の段階で最大の疑問。 【課題】 大昔に「署名なし …

4日目:地図アプリを作る~人生の位置情報を求めて~

「そもそも八幡山ってどんなところよ?」 そんな声が聞こえてきそうです。 こんなと …

1日目:計算機を作ろうとしたらUSBドライバの勉強が進んだの巻

~前回までのあらすじ~ AndroidSDKは重い。 AndroidSDKは複雑 …

4日目の前日:ところで駅コレのAndroid版って

そもそも今回れさくがAndroidアプリ教室に通っている理由は、「駅コレのAnd …

写真 2014-11-21 2 41 32
2日目:スタバで授業の復習をしたら駅コレAndroidアプリができてしまった(前編)

クラウドナインアップスのAndroidアプリ教室、2日目です。 今日はデータの読 …

unnamed
プロローグ:ジオの奇妙な冒険

2010年! それは位置ゲーとジオメディアの発展が起業家の思想と生活を変えた時代 …

eclips2
0日目:Androidアプリ開発環境をMacに設定しかけて途中からWindowsに設定する

~前回までのあらすじ~ 「ちょっと!蕎麦の出前まだなの?」 「すみませんねェ、今 …

10671457_837472396304552_3584240601328250199_n
2日目:スタバで授業の復習をしたら駅コレAndroidアプリができてしまった(後編)

~これまでのあらすじ~ スタバでスタバなうを作った。 さて、この勢いでもっと何か …

manifes2
3日目:アトム・ハート・ファーザー~カメラアプリを作るッ!

あ…ありのまま 今 起こった事を話すぜ! 「AndroidManif …