2015/05/30

Google Cloud Message 3.0 クイックスタート

参考

Get Project

Google公式のQuickStartアプリで簡単に始めることができる.
サンプルプロジェクトは下記から取得する.

$ git clone https://github.com/googlesamples/google-services.git

cloneしたファイルにあるgoogle-services/android/gcmがGCM3のサンプル.

Get Configuration file

GCM3.0を使用するためにConfiguration fileの追加が必要.
Configuration fileを得るためのウィザードをGoogleが用意してくれている.
Configuration Fileの取得には作成済みのAndroid Appを求められるが手軽に試すための’Default Demo App’を選択すればAndroid Appを持っていなくても始めることができる.
本稿はApp name:’Default Demo App’, package name: ‘gcm.play.android.samples.com.gcmquickstart’として進める.
ともかくウィザードに従ってconfiguration fileを取得する.
[Choose and configure services]>[ENABLE GOOGLE CLOUD MESSAGING]>[Generate configuration files]>
[Download google-services.json]でconfiguration fileを取得できる.
ダウンロード画面で表示される “Server API Key” と “Sender ID” は覚えておく.

Implementing GCM Client on Android

前述のgoogle-servicesを流用すれば実装の必要はないので本章はskipできる.

既存アプリにGCM3を適用したい場合は下記の要件に注意.
Googleはクライアントコードの作成においてGoogleCloudMessagingAPIの使用とAndroid Studio+Gradleの使用を推奨している.

またAndroidのGCM clientへの要件としては次のものがある.

  • Android2.2 or higer(need Google Play Store application. )
  • GCMの新機能を使用したい場合はAndroid2.3 or higher
  • 3.0以前はGoogleアカウントの設定が必須であったが, 4.0.4以降はGoogleアカウント設定が必須ではなくなった.
    4.0.4以降はGoogleへのログインが必要になるケースがある.

GCMはクライアントとサーバ両方実装することを推奨している. サーバの実装についてはAbout GCM Connection Serverを参照.
クライアントコードについてはQuick Start Sampleが参考になる.

Caution!
既存のコードがWakefulBroadcastReceiverを使っているならGCMReceiverとGcmListenerServiceに置き換えることを推奨する.

  • AndroidManifest.xmlではGcmBroadcastReceiverを “com.google.android.gms.gcm.GcmReceiver”に置き換え, サービスの継承元をIntentServiceからGcmListenerServiceに置き換える.
  • BroadcastReceiverの実装コードを削除する.
  • IntentServiceのコードをGcmListenerServiceのコードに置き換える.

Add the configuration file

ダウンロードしたconfiguration fileをappモジュール直下に配置する.

Run Application

Configuration fileを追加したならばGCM Quickstartのアプリケーションを実行する.
GCM Quickstartアプリが起動し, DeviceのRegistrationが完了すると”Token retrived and sent to server”のメッセージが表示される.

GCM Qucickstart

Sent Google Cloud Message

Quickstartアプリに同梱されているgcmsenderを使ってGCMの動作を確認できる.
gcmsenderモジュールにあるgcm.play.android.samples.com.gcmsender.GcmSenderクラスに定義されているAPI_KEYを”Get Configuration file”で取得したAPI_KEYに置き換える.

public class GcmSender {
  // public static final String API_KEY = "API_KEY";
  public static final String API_KEY = "AIxxxxxxx";

GcmSenderは下記のコマンドで実行できる. argsに好きなメッセージを指定して実行すればデバイスにメッセージが届く.

$ ./gradlew :gcmsender:run -Pargs="hello GCM3."

以上.