注目の記事

[AWS] Amazon SNS の新機能「Mobile Push」を Android で使ってみた

2013.08.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

8月13日(現地時間)、Amazon SNS にモバイルデバイス用の新機能「Mobile Push」がリリースされました。これによって SNS と GCM を組み合わせたプッシュ通知機能を簡単に実装することができます。ちなみに iOS は APNS、Kindle Fire は ADM といったようにクロスプラットフォームなプッシュ通知を簡単に実装することができます。しかも100万件まで無料!
ということでサクッとサンプルコードを試してみました。
ちなみに SNS ってなんじゃーってかたはこちらを、GCMについてはこちらをご参照ください!

iOS 版はこちら

事前準備

サンプルアプリを実行してみる

ということでサンプルアプリを実行してみたいと思います。まずは Google API Console で GCM のサービスを有効にします。

https://code.google.com/apis/console

mobile_push01

また、API キーが必要になるのでメモっておきます。

mobile_push02

次にクライアントの実装です。以下よりサンプルファイルをダウンロードしましょう。

https://s3.amazonaws.com/codesamples/sns/latest/snsmobilepush.zip

この中の AndroidMobilePushApp がプロジェクトフォルダなので、Eclipse なり Android Studio なりにインポートします。また Google Play Services ライブラリはまだインポートされていないので忘れずにインポートするようにしましょう。styles.xml でコンパイルエラーがありましたが、ビルド SDK のバージョンが 2.2 になっていたのが原因でした。上げておきましょうね。
次に res/strings.xmlproject_number を Google API のプロジェクト番号にします。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    
    …
    
    <!-- TODO: Enter your project number -->
    <string name="project_number"></string>
    
    …
    
</resources>

プロジェクト番号は Google API Console の URL の project: 以降の数値です。

mobile_push07

ここまでできたら一度実行します。以下の画面になれば成功です!

mobile_push03

Logcat に registrationId が出力されているのでコピーしておきます。

mobile_push04

次に push 元のアプリの実装ですが、サンプルアプリに Java 用のコードがあるのでそれを使ってみます。まずは Java プロジェクトを新規作成し、サンプルファイルの SNSSamples/src フォルダをすべてコピペし、AWS SDK for Java をインポートします。
あとはソースコードを若干修正します。まずは AwsCredentials.properties に AWS にアクセスキーとシークレットキーを入力します。

#TODO: your AWS Credentials from http://aws.amazon.com/security-credentials
accessKey:
secretKey:

次に SNSMobilePush.java の 81 行目がコメントアウトされているので外します。

sample.demoAndroidAppNotification(Platform.GCM);

次に demoAndroidAppNotification() メソッドのもろもろの設定値をセットしていきます。

public void demoAndroidAppNotification(Platform platform){
    // TODO: Please fill in following values for your application
    String registrationId = "Logcat で出力された RegistrationId";
    String principal = ""; // principal is not applicable for GCM
    String serverAPIKey = "Google API の Service API Key";
    String applicationName = "gcmpushapp";
    demoNotification(platform, principal, serverAPIKey, registrationId, applicationName);
}

ここまでできたら実行してみましょう。コンソール画面に下図のように表示されたら成功です。

mobile_push06

アプリを見てみると…メッセージが出力されています!

mobile_push05

以下、追記しました。

AWS Management Console から直接 Publish してみる

上記では AWS SDK for Java を使って Publish しましたが、サクッと試すにはちょっと面倒ですし、ちょっと分かりづらかったですね。ということで AWS Management Console から直接 Publish してみます。

https://console.aws.amazon.com/sns/home

「Add a New App」をクリックし「Application Name」、「Push Platform」、「API Key」をそれぞれ設定していきます。

mobile_push08

次に「Add Endpoints」で「Device Token」に RegistrationId を入力します。

mobile_push09

以下のようになれば追加成功です。

mobile_push10

あとは「Publish」をクリックして、メッセージを適当に入れて Publish します。

mobile_push11

おぉ。無事に Push できました!

mobile_push12

まとめ

サーバーレスでプッシュ通知を作ることもできるので、手軽に導入できます!GCM をすでに使っているアプリも簡単に SNS に置き換えができますね。

参考