注册混乱Android GCM

时间:2012-06-29 10:43:57

标签: android android-c2dm google-cloud-messaging

我正在尝试迁移到Android中的GCMC2DM现已弃用。所描述的注册过程here与所述注册here不同。两个注册都一样吗?我们可以看到GCMRegistrar的代码肯定知道吗?

5 个答案:

答案 0 :(得分:6)

我已成功将我的C2DM项目迁移到GCM。经测试,它工作正常。唯一的变化是:

    Android应用中的
  • - 在注册时更改sender的值
  • 服务器端的
  • - 更改auth标头和URL

就谷歌的互动而言,就是这样。应用程序的逻辑决定了更多的变化:

  • 在Android应用中,注册ID已缓存在其首选项中。升级后,我会从首选项中删除reg ID以强制重新注册,这次是使用GCM。
  • 将reg ID传递给服务器的逻辑得到了一个额外的布尔参数 - 如果这是C2DM或GCM reg ID
  • 发送消息的逻辑以所述参数为条件。

将C2DM逻辑完全扔出服务器是不明智的 - 不是每个人都升级他们的Android应用程序。旧的,支持C2DM的版本将在野外出现一段时间。谷歌承诺在短期内保持C2DM的运行。因此,消息发送是有条件的 - 根据reg ID类型,它会发送到GCM或C2DM。

编辑:条件逻辑:

if($RegID_Is_GCM)
{
    $Auth = GCM_Auth();
    $URL = $GCM_URL;
}
else
{
    $Auth = C2DM_AUTH();
    $URL = $C2DM_URL;
}

答案 1 :(得分:5)

它们实际上是同一件事。第二个在静态方法中封装第一个并注册广播接收器。您可以将源附加到gcm.jar并亲自查看。你可以在〜/ android-sdks / extras / google / gcm / gcm-client / gcm-src.jar中找到源代码

答案 2 :(得分:1)

我在GCM中最喜欢的是我们将从GCM服务器获取的 RegID ,它不仅是一个ID,它还是此设备上此应用程序的地址。因此,这次您不需要按照C2DM中的注册ID 将设备ID发送到服务器。

在C2DM中,每次请求注册ID时,您都会获得一个新ID。

但是在使用应用程序包生成的GCM RegId以及某些设备ID 时,如果您将一次又一次请求注册ID,您将收到相同的RegId。

如果您卸载某个应用程序并再次安装它,GCM服务器将为您提供相同的注册ID。

因此,一个Registraion Id不需要任何设备ID发送到服务器。

答案 3 :(得分:0)

GCMRegistrar只是帮助您完成第一页所述的腿部工作。

你可以在这里看到课程。 android-sdk\extras\google\gcm\gcmclient\src\com\google\android\gcm

答案 4 :(得分:0)

我成功地从C2DM迁移到GCM。我还记录了如何实现GCM http://android.amolgupta.in/2012/07/google-cloud-messaging-gcm-tutorial.html