10

我正在尝试迁移到GCMAndroid,C2DM现在已被弃用。此处描述的注册过程与此处描述的注册不同。两个注册一样吗?我们可以看到代码来确定吗?GCMRegistrar

4

5 回答 5

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;
}
于 2012-06-29T14:39:35.627 回答
5

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

于 2012-06-29T14:34:21.430 回答
1

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

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

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

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

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

于 2012-08-16T20:31:14.503 回答
0

GCMRegistrar 只是完成第一页中描述的腿部工作的助手。

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

于 2012-06-29T14:35:57.433 回答
0

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

于 2012-07-05T04:22:48.973 回答