Android で C2DM から GCM サービスに移行しようとしています。
1つの問題に直面しました。登録インテントを送信すると、次のサービスが開始されます。
- バージョンで。2.3.5 - 「Could to Device Messaging」および「Google Messaging Service」
- バージョンで。4.0.4 - 「Google メッセージング サービス」
- バージョンで。2.3.3 - 「Cloud to Device Messaging」および「Google Messaging Service」
実際のデバイスを使用する
次のコードを使用してみました:
Intent registrationIntent = new Intent(
"com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app",
PendingIntent.getBroadcast(context, 0, new Intent(), 0));
registrationIntent.putExtra("sender", SENDER_ID_NUMBER);
this.context.startService(registrationIntent);
と
GCMRegistrar.checkDevice(context);
GCMRegistrar.checkManifest(context);
final String regId = GCMRegistrar.getRegistrationId(context);
if (regId.equals("")) {
GCMRegistrar.register(this.context, SENDER_ID_NUMBER);
} else {
Log.v("gcm_registration", "Already registered");
}
編集: ローカル サーバーをセットアップし、Google gcm のシミュレーションを使用した後、次のことがわかりました。
- バージョンで。2.3.5 - gcm メッセージが表示されない
- バージョンで。4.0.4 - gcm メッセージが表示されます
- バージョンで。2.3.3 - gcm メッセージが表示される
EDIT2:
もう少しテストした後、次のことがわかりました:Android OSのどのバージョンがどのサービスを実行するかについて上記で説明したように、電話を再起動してネットワークをオンにすると、これらのサービスが開始されます今、すべての(電話で Google サービスを停止し、登録インテントを送信します: com.google.android.c2dm.intent.REGISTER
、次に:
- バージョンで。2.3.5 - 「Could to Device Messaging」が開始されました
- バージョンで。4.0.4 - 「Google Messaging Service」が開始されました
- バージョンで。2.3.3 - 「Cloud to Device Messaging」の開始
これにより、「Cloud to Device Messaging」が開始されているデバイスに通知を送信できなくなります。
質問:
私のアプリケーションは C2DM と GCM の両方をサポートする必要があるということですか?
一言で言えば、なぜこれが起こるのでしょうか?また、そのような動作を回避する方法は?
Google サービスが GCM 登録インテントでさまざまなサービスを開始するのはなぜですか?