Android 注册管理

Android 注册管理,android,android-c2dm,google-cloud-messaging,Android,Android C2dm,Google Cloud Messaging,我正在尝试迁移到Android中的GCM,C2DM现在被弃用。所描述的注册过程与所描述的注册过程不同。两个注册相同吗?我们是否可以查看gcmregistar的代码以确定答案?它们实际上是相同的东西。第二个以静态方法封装第一个,并注册广播接收器。您可以将源代码附加到gcm.jar并亲自查看。您可以在~/android-sdks/extras/google/gcm/gcm-client/gcm-src.jar中找到源代码。gcmregistar只是一个助手,它完成了第一页中描述的腿部工作 你可以在这

我正在尝试迁移到Android中的
GCM
C2DM
现在被弃用。所描述的注册过程与所描述的注册过程不同。两个注册相同吗?我们是否可以查看
gcmregistar
的代码以确定答案?

它们实际上是相同的东西。第二个以静态方法封装第一个,并注册广播接收器。您可以将源代码附加到gcm.jar并亲自查看。您可以在~/android-sdks/extras/google/gcm/gcm-client/gcm-src.jar中找到源代码。gcmregistar只是一个助手,它完成了第一页中描述的腿部工作


你可以在这里看到班级
android sdk\extras\google\gcm\gcmclient\src\com\google\android\gcm

我已经成功地将我的C2DM项目迁移到了gcm。经过测试,效果良好。唯一的变化是:

  • 在Android应用程序中-注册后更改
    发送者的值
  • 在服务器端-更改身份验证标头和URL
就与谷歌的互动而言,就是这样。应用程序的逻辑决定了更多的变化:

  • 在Android应用程序中,注册ID缓存在其首选项中。升级后,我从首选项中删除注册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;
}

我已经成功地从C2DM迁移到GCM。我还记录了如何在

我在GCM中最喜欢的东西是我们将从GCM服务器获得的RegID,它不仅是一个ID,也是此设备上此应用程序的地址。所以,这次您不需要按照C2DM中的was向服务器发送设备Id和注册Id

在C2DM中,每次您请求注册id时,您都将获得一个新id

但在GCM注册码中,使用您的应用程序包以及一些设备id生成的注册码,因此,如果您一次又一次地请求注册码,您将收到相同的注册码

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

因此,一个注册Id不需要任何设备Id就可以发送到服务器。

hi,“发送消息的逻辑取决于所述参数。”是什么意思?