メニュー
Amazon Simple Notification Service
開発者ガイド (API バージョン 2010-03-31)

Android 用 Google クラウドメッセージング の使用開始

Android 用 Google クラウドメッセージング (GCM) は、Android アプリにプッシュ通知メッセージを送信できるようにするサービスです。このセクションでは、GCM の前提条件を取得し、プッシュ通知メッセージをモバイルエンドポイントに送信する方法について説明します。

GCM の前提条件

Android アプリにプッシュ通知メッセージを送信するには、以下が必要です。

  • GCM に登録された Android アプリ

  • 登録 ID

  • サーバー API キー (送信者の認証トークン)

すでにこれらの前提条件がある場合は、Amazon SNS コンソールを使ってモバイルエンドポイントにプッシュ通知メッセージを送信するか、Amazon SNS API を使用できます。Amazon SNS コンソールの使用方法の詳細については、「Amazon SNS モバイルプッシュの使用」を参照してください。Amazon SNS API の使用方法の詳細については、「ステップ 4: GCM を使用してモバイルエンドポイントにプッシュ通知メッセージ送信する」を参照してください。

ステップ 1: Google API プロジェクトを作成し、GCM サービスを有効にする

Android アプリにプッシュ通知メッセージを送信するには、Google API プロジェクトがあり、GCM サービスを有効にしている必要があります。

Google API プロジェクトを作成し、GCM サービスを有効にするには

  1. Google API コンソールのウェブサイトで、Google API プロジェクトがあることを確認します。

  2. [Services] をクリックし、Android 用 Google クラウドメッセージング がオンであることを確認します。

ステップ 2: サーバー API キーを取得する

Amazon SNS は、ユーザーに代わって GCM と通信するため、サーバー API キーを使用します。このキーは後の手順で使用して、プッシュ通知をモバイルエンドポイントに送信します。

サーバー API キーを取得するには

  1. Google APIs Console ウェブサイトで、[API Access] をクリックし、[Key for server apps (with IP locking)] ラベルが付いたサーバー API キーを書き留めます。

  2. まだサーバー API キーを作成していない場合は、[Create new Server key] をクリックします。このキーはこのセクションの後で使用して、プッシュ通知をモバイルエンドポイントに送信します。

ステップ 3: GCM から登録 ID を取得する

プッシュ通知メッセージを受信するために GCM にアプリを登録すると、登録 ID が生成されます。Amazon SNS はこの値を使用して、モバイルプッシュ通知の送信先アプリと関連付けられたデバイスを判断します。

以下の手順は、AWS に用意されているサンプルの Android アプリを使って GCM から登録 ID を取得する方法を示しています。Amazon SNS プッシュ通知の使用を開始するときは、このサンプル Android アプリが役立ちます。このサンプルアプリでは、Android SDK、Google Play Services SDK、および Android Support Library パッケージが必要です。これらの SDK の詳細については、「Android SDK の取得」および「Google Play Services SDK のセットアップ」を参照してください。Android Support Library パッケージの詳細については、「サポートライブラリのセットアップ」を参照してください。

注記

用意されているサンプル Android アプリは、Android バージョン 2.3 以降を実行している物理デバイス、および Google API 17 以降を実行している仮想デバイスと互換性があります。

アプリ用に GCM から登録 ID を取得するには

  1. snsmobilepush.zip ファイルをダウンロードして解凍します。

  2. IDE に AndroidMobilePushApp フォルダーをインポートします。Eclipse で、[File] をクリックし、[Import] をクリックして、[Android] フォルダーを展開します。次に、[Existing Android Code Into Workspace] をクリックし、[Next] をクリックして、AndroidMobilePushApp フォルダーを参照し、[OK] をクリックしてから、[Finish] をクリックします。

    サンプル Android アプリを IDE にインポートしたら、Google API プロジェクトのプロジェクト番号を strings.xml に追加する必要があります。このファイルはサンプルの Android アプリに含まれています。

  3. Google API プロジェクトのプロジェクト番号を strings.xml ファイルに追加します。IDE で、ファイルは [values] フォルダーに含まれています。これは [res] のサブフォルダーです。文字列は以下のようになります。

    <string name="project_number">012345678912</string>
  4. [Java Build Path] に google-play-services.jarandroid-support-v4.jar、および android.jar を追加します。エクスポートの場合は google-play-services.jar および android-support-v4.jar を選択しますが、android.jar は選択しないでください。

  5. アプリを実行して、Android ログ記録システムに出力された登録 ID を確認します。Android ADT プラグインと共に Eclipse を使用している場合、[LogCat] 表示ウィンドウに登録 ID が表示されます。たとえば、登録 ID を含む出力は次のようになります。

    06-05 11:50:43.587: V/Registration(14146): Registered, registrationId: = Examplei7fFachkJ1xjlqT64RaBkcGHochmf1VQAr9k-IBJtKjp7fedYPzEwT_Pq3Tu0lroqro1cwWJUvgkcPPYcaXCpPWmG3Bqn-wiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw, error = null, unregistered = null

    インストールされているアプリが、Android デバイスに表示されます。

登録 ID、サーバー API キー、および GCM に登録された Android アプリが用意されました。これで、Amazon SNS コンソールまたは Amazon SNS API を使用して、デバイスの Android アプリに通知を送信できます。Amazon SNS コンソールを使用するには、「Amazon SNS モバイルプッシュの使用」を参照してください。Amazon SNS API を使用するには、「ステップ 4: GCM を使用してモバイルエンドポイントにプッシュ通知メッセージ送信する」を参照してください。

ステップ 4: GCM を使用してモバイルエンドポイントにプッシュ通知メッセージ送信する

このセクションでは、モバイルエンドポイントにプッシュ通知メッセージを送信する方法について説明します。AWS のサンプルファイル SNSMobilePush.java に、収集された前提条件情報を追加します。サンプルファイルは snsmobilepush.zip ファイルに含まれています。

注記

以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java をインストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としています。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細については、「セキュリティ認証情報の取得方法」(AWS General Reference) を参照してください。

サンプルを Eclipse に追加するには

  1. Eclipse で新しい Java プロジェクトを作成します ([File] | [New] | [Java Project])。

  2. 新しく作成した Java プロジェクトの最上位ディレクトリに SNSSamples フォルダーをインポートします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をクリックして、[General] を展開します。次に、[File System]、[Next] をクリックし、SNSSamples フォルダーを参照し、[OK] をクリックしてから、[Finish] をクリックします。

  3. SNSSamples/src/com/amazonaws/sns/samples/mobilepush フォルダーで、AwsCredentials.properties ファイルを開き、AWS の認証情報を追加します。

ビルドパスに AWS SDK for Java を追加するには

  1. Java Project フォルダーを右クリックし、[Build Path] をクリックしてから、[Configure Build Path...] をクリックします。

  2. [Libraries] タブをクリックし、[Add Library...] をクリックします。

  3. [AWS SDK for Java] をクリックし、[Next] をクリックしてから、[Finish] をクリックします。

前提条件情報を SNSMobilePush.java に追加するには

  1. SNSSamples/src/com/amazonaws/sns/samples/mobilepush フォルダーの SNSMobilePush.java を Eclipse で開き、sample.demoAndroidAppNotification(); のコメントを解除します。これは次のように表示されます。

    SNSMobilePush sample = new SNSMobilePush(sns); // TODO: Uncomment the services you wish to use. sample.demoAndroidAppNotification(); // sample.demoKindleAppNotification(); // sample.demoAppleAppNotification(); // sample.demoAppleSandboxAppNotification(); // sample.demoBaiduAppNotification(); // sample.demoWNSAppNotification(); // sample.demoMPNSAppNotification();
  2. demoAndroidAppNotification メソッドを探し、登録 ID 文字列の値として、GCM から受信した登録 ID を入力します。たとえば、次のようになります。

    String registrationId = = "EXAMPLE-kLMchcX0v3xOxWVhG6TfdBp...KT2TGkvnKyTvLuSpzK_qsHgxVB_UpmcUa7Gl6g3EXAMPLE";
  3. アプリケーションの API キーを入力します。たとえば、次のようになります。

    String serverAPIKey = "EXAMPLExV2lcV2zEKTLNYs625zfk2jh4EXAMPLE";
  4. アプリケーションの名前を入力します。アプリケーション名は大文字および小文字の ASCII 文字、数字、アンダースコア、ハイフン、およびピリオドのみで構成され、1~256 文字の長さである必要があります。たとえば、次のようになります。

    String applicationName = "gcmpushapp";
  5. アプリケーションを実行します。IDE の出力ウィンドウに次のような出力が表示されます。

    =========================================== Getting Started with Amazon SNS =========================================== {PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/GCM/gcmpushapp} {EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/GCM/gcmpushapp/5e3e9847-3183-3f18-a7e8-671c3a57d4b3} {"default":"This is the default message","GCM":"{\"delay_while_idle\":true,\"collapse_key\":\"Welcome\",\"data\":{\"message\":\"Visit Amazon!\",\"url\":\"http://www.amazon.com/\"},\"time_to_live\":125,\"dry_run\":false}"} Published. MessageId=1ca8d7d1-c261-5bfc-8689-9db269c4e46c

    Android デバイスで、次のようなプッシュ通知メッセージが Android アプリ内に表示されます。