注册混淆Android GCM

我正尝试在Android中迁移到GCMC2DM现已被弃用。 此处所述的注册过程与此处所述的注册不同。 两个注册是一样的吗? 我们可以看到GCMRegistrar代码能够确定吗?

Solutions Collecting From Web of "注册混淆Android GCM"

他们实际上是一样的东西。 第二个以静态方法封装第一个,并注册一个广播接收器。 你可以把源代码附加到gcm.jar并亲自查看。 你可以在〜/ android-sdks / extras / google / gcm / gcm-client / gcm-src.jar中find源代码

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

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

就这一点而言,就与Google的互动而言。 应用程序的逻辑决定了更多的一些变化:

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

把C2DM逻辑彻底抛出服务器将是不明智的 – 不是每个人都升级他们的Android应用程序。 旧的C2DM版本将在一段时间内出现。 Google承诺在短期内保持C2DM运行。 所以消息发送是有条件的 – 取决于注册IDtypes,它发送到GCM或C2DM。

编辑重新:条件逻辑:

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

我最喜欢GCM的东西是我们从GCM服务器获得的RegID ,它不仅是一个ID,它是这个设备上这个应用程序的一个地址。 所以这次你不需要像在C2DM中那样把设备ID和你的注册ID一起发送到服务器。

在C2DM中,每当您申请一个注册ID时,您将获得一个新的ID。

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

如果你卸载一个应用程序,并将再次安装,GCM服务器将给你相同的注册ID。

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

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

GCMRegistrar只是一个帮手,在第一页描述的腿部工作。

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