0

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 登録インテントでさまざまなサービスを開始するのはなぜですか?

4

0 に答える 0