Amazon SNSを使ってAndroid端末にPush通知を送る
Amazon SNSというサービスがありまして、これを使うと、管理画面やAPI経由でAndroid, iPhone, Kindleといった端末にPush通知を送ったり、メールで通知をしたりすることが簡単にできます。
Amazon SNS (メッセージ通知サービス Amazon Simple Notification Service) | アマゾン ウェブ サービス(AWS 日本語)
必要があって本日初めて使ったので、サンプルアプリケーションをビルドして実際に試すまでをやってみました。
GCM(Google Clout Messaging)のproject_idとAPI Keyを入手する
Googleアカウントはお持ちだと思いますが、Push通知をするためにGCMのproject_idとAPI Keyというものが必要になります。
こちらの記事が参考になります。
1. GCM をはじめよう - ソフトウェア技術ドキュメントを勝手に翻訳
project_idというのは、
プロジェクトを作成し、コンソールを開くと、
https://code.google.com/apis/console/#project:1234567890
という形式のURLになりますが、このproject:から後ろの数値のことです。
AWSアカウントを作る
AWSアカウントがないとダメです。クレジットカードの登録が必要かと思いますが、1ヶ月100万プッシュ通知までは無料らしいので、個人で使っていてオーバーすることはまずないのではないでしょうか。
万が一超えてしまっても、1ドル / 100万件なので安心です。
アプリを作成する
"Add a New App"を押して、アプリケーションを作成します。
図のように、Application Name, Push Platform(GCMを選択), API Key(GCMのAPI Key)を入力し、Add New Appを押します。
サンプルアプリのソースコードをダウンロードする
サンプルアプリのソースコードは、
https://s3.amazonaws.com/codesamples/sns/latest/snsmobilepush.zip
にあります。
これを解凍し、今回はAndroidで動作することを確かめるので、その中のAndroidMobilePushAppというディレクトリのみを使います。
Eclipseにインポート
前述のディレクトリをプロジェクトととしてインポートします。
Android SDKのバージョンは22以上でないとダメです。
また、Goolge Play servicesという追加パッケージもインストールしておきます。
(※Google Cloud Messaging for Android Libraryは非推奨になりました。)
Google Play servicesのライブラリもプロジェクトにインポートします。
Androidmanifest.xmlのバージョンを使用するAPIのバージョンに合わせます。
res/strings.xmlのproject_numberに先ほど取得したGCMのproject_idを書き込みます。
<string name="project_number">1234567890</string>
端末にインストール
アプリをビルドし、端末にインストールします。
アプリを起動
USBケーブルはPCとつないだまま(Eclipseに端末のログが表示される状態)にして、
アプリを起動すると、画面にidが表示され、
同時に、PC側に表示されるログの中に
02-14 16:53:32.996: I/displaying message(10219): registration_id=AoYg6bHQ4gb_svk7rxjSHuLBTCulIvBGdwXsEyKDy9-Ro6ouNFo0YAPEmu2WAyWlv05xFEIP9OSOEkH7dgJgJBZHZzqaExrud- p1VFN8t_oivEEhoI3idVWny13DxBPM6uaDzipPfdsoaPeL8VsWL9-7wbDmAabr
というようなものがあるはずです。
この、registration_idをコピーしておきます。