れさくのブログ

れさくのブログ

*

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="">

  関連記事

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

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

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

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

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

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

unnamed
リリース前に:apkとapkとKeyStoreとzipalign

クラウドナインアップスでの授業も終わり、なんだかアプリが作れてしまいました。 こ …

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

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

ic_launcher
おまけ:本当は大変なAndroid開発

スクールで作ったapkファイルがあれば、「新規で」アプリリリースするなら簡単。 …

いよいよ本番:eclipse上でプロジェクトをコピーする

クラウドナインアップス卒業後も先生に質問しまくったりサンプルコード頂いたりしまく …

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

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

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

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

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

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