我正在将我的Android应用从C2DM迁移到GCM。我有服务器端设置接收两者都有一个指示GCM与C2DM的ID,然后在服务器端我通过适当的服务发送,具体取决于它注册的服务。
我遇到的问题是该应用程序正在我的服务器注册为GCM(应用程序更新使用意图中的新发件人ID。)但遗憾的是,它传递给服务器进行注册的ID id实际上是旧的C2DM ID。
我需要做一些事情,作为此迁移的一部分(在应用程序代码中),以确保我获得新的(GCM)ID,而不是继续使用现有的C2DM注册ID。这对我来说很容易测试和重现,每次都能获得一致的结果(来自GCM服务器的MisMatchedSenderId)。我是否需要先取消注册C2DM ID?
答案 0 :(得分:0)
您必须更新客户端代码才能发送Google API项目ID而不是电子邮件地址作为发件人ID。
有关如何获取Google API项目ID的说明,请参见GCM Getting Started Guide。
以下是我从Migration Guide:
复制的示例代码更改Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
// sets the app name in the intent
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
registrationIntent.putExtra("sender", senderID);
startService(registrationIntent);
就我而言,senderID实际上是从strings.xml读入的,因此我不得不用Google API项目ID替换那里的电子邮件地址。
答案 1 :(得分:0)
我们能够弄清楚问题是什么,因为设备已经有了注册ID(c2dm),它甚至没有打算尝试用新的senderId(对于gcm)命中注册服务器,因此它正在使用旧的c2dm注册ID。感谢您的评论