0

尝试在 Android 上从 C2DM 迁移到 GCM 服务。

面临一个问题。发送注册意图时,我启动了以下服务:

  • 在版本。2.3.5 - 'Could to Device Messaging' 和 'Google Messaging Service'
  • 在版本。4.0.4 - '谷歌消息服务'
  • 在版本。2.3.3 -“云到设备消息”和“谷歌消息服务”

使用真实设备

尝试使用以下代码:

    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运行哪个服务,所以如果我重新启动手机并打开网络,这些服务就会启动现在,如果我关闭所有(停止)手机上的谷歌服务并发送注册意图:com.google.android.c2dm.intent.REGISTER,然后:

  • 在版本。2.3.5 - 'Could to Device Messaging' 启动
  • 在版本。4.0.4 - “谷歌消息服务”已启动
  • 在版本。2.3.3 - “云到设备消息”已启动

这使得无法向那些启动“云到设备消息传递”的设备发送通知。

问题:

这是否意味着我的应用程序必须同时支持 C2DM 和 GCM?

简而言之,为什么会发生这种情况以及如何避免这种行为?

为什么 Google Services 会针对 GCM 注册意图推出不同的服务?

4

0 回答 0