0

我正在将我的 android 应用程序从 C2DM 迁移到 GCM。我有服务器端设置来接收两者,并指示 GCM 与 C2DM 的 ID,然后在服务器端,我根据注册的服务通过适当的服务发送出去。

我遇到的问题是应用程序正在向我的服务器注册为 GCM(应用程序更新以在意图中使用新的发件人 ID。)但是不幸的是,它传递给服务器以获取注册 ID 的 ID 实际上是旧的 C2DM ID。

作为此迁移的一部分(在应用程序代码中),我需要做些什么来确保我获得一个新的 (GCM) ID,而不是继续使用现有的 C2DM 注册 ID。这对我来说很容易测试和重现,并且每次都能得到一致的结果(来自 GCM 服务器的 MisMatchedSenderId)。我需要先注销 C2DM id 吗?

4

2 回答 2

0

您必须更新您的客户端代码以发送 Google API 项目 ID 而不是电子邮件地址作为发件人 ID。

GCM 入门指南中提供了有关如何获取 Google API 项目 ID 的说明。

这是我从迁移指南复制的示例代码更改:

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 替换那里的电子邮件地址。

于 2012-09-05T13:17:45.100 回答
0

我们能够找出问题所在,因为该设备已经有一个注册 ID(c2dm),它甚至没有尝试使用新的 senderId(用于 gcm)访问注册服务器,因此它使用的是旧的 c2dm 注册ID。感谢您的评论

于 2012-09-07T17:44:30.517 回答