答案 0 :(得分:6)
我已成功将我的C2DM项目迁移到GCM。经测试,它工作正常。唯一的变化是:
sender
的值就谷歌的互动而言,就是这样。应用程序的逻辑决定了更多的变化:
将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