2013年1月24日木曜日

GCMの端末登録でAPI Level 15以上ならGoogleアカウントは必須ではないというのは本当か?

Google Cloud Messaging(GCM)のドキュメントにこんな事が書いてある。

GCM Architectural Overview | Android Developers


It requires devices running Android 2.2 or higher that also have the Google Play Store application installed, or or an emulator running Android 2.2 with Google APIs.
(GCMは2.2以降でかつGoogle Play Storeがインストールされている必要があります。もしくは、2.2以降のGoogle APIがサポートされているエミュレーターが必要です。)

It uses an existing connection for Google services. For pre-3.0 devices, this requires users to set up their Google account on their mobile devices. A Google account is not a requirement on devices running Android 4.0.4 or higher.
(GCMはすでにあるGoogleサービスのコネクションを使用します。3.0以前のデバイスではGoogleアカウントをセットアップしておく必要があります。4.0.4以降のデバイスではGoogleアカウントは必須ではありません。)

かなり混乱した。API Levelでひとつひとつ分解すると・・・

  1. 実機でGCMを動作させるにはAPI Level 8以降が必要
  2. エミュでGCMを動作させるにはAPI Level 8以降でGoogle APIサポートが必要
  3. API Level 8, 10, 11, 12, 13, 14では予めGoogleアカウントを端末に追加しておく必要がある
  4. API Level 15, 16, 17ではGoogleアカウントは必要ない

ここで、特に4に注目した。API Level 15以上ならGoogleアカウントは必須ではないというのは本当か?

そこで、Google APIサポートのあるエミュで検証してみることにした。

先に結論を言えば、これは本当だ。

API Level 10, 14のエミュでは、Googleアカウントを端末に追加しておかないとGCMに端末を登録できなかった。

API Level 15, 16, 17のエミュではGoogleアカウントを端末に追加していなくてもGCMに端末を登録できた。

ちなみに、API Level 15, 16, 17でも、Google APIサポートのないエミュ(x86版など)ではGCMに端末を登録できなかった。