首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android复制不同设备的注册id

Android复制不同设备的注册id
EN

Stack Overflow用户
提问于 2014-02-28 17:04:27
回答 3查看 3.5K关注 0票数 11

我在推送通知服务器上看到了这个问题--不同的Android设备(由他们的IMEI标识)从Google的GCM服务接收相同的注册id。注册id不是应该是唯一的吗?在东为相同的应用程序还是GCM密钥?

我看到了这条线索,但似乎没有答案:两种不同的设备是否具有相同的GCM注册ID?

任何帮助都将不胜感激。

编辑这里是注册的相关代码:

代码语言:javascript
复制
 Intent intent = new Intent(
                                   "com.google.android.c2dm.intent.REGISTER");
                   intent.setPackage("com.google.android.gsf");
                   intent.putExtra("app",
                                   PendingIntent.getBroadcast(context, 0, new Intent(), 0));

                   intent.putExtra("sender", flatSenderIds);
                   context.startService(intent);
EN

回答 3

Stack Overflow用户

发布于 2014-03-09 15:52:36

我想到的唯一想法是,如果sender的额外值在所有设备上都相同,这个不推荐的方法将在不同的设备上分配相同的ID。这与现在的版本不同,你没有说你是谁,你甚至不发送一个Intent,你只打电话给register(),谷歌决定你是谁,你应该得到什么ID。

如果您最终使用了这个新库,那么有一个如何注册(在AsyncTaskThread中)的示例片段:

代码语言:javascript
复制
GoogleCloudMessaging gcm = null;

try {
  // Will be for the first time
  if (gcm == null)
    gcm = GoogleCloudMessaging.getInstance(your_context);

  // Registration against the GCM service
  String regid = gcm.register(YOUR_SENDER_ID_OBTAINED_FROM_YOUR_PROJECT);

  // You'll need to send the registration info to your remote server
  registerRemoteServer(regid);

  Log.d("MyGCM", "Registered on GCM as " + regid);
}
catch (final IOException ex) { ex.printStackTrace(); }
票数 6
EN

Stack Overflow用户

发布于 2014-02-28 17:10:55

有时Google会更改注册ID,您将有多个ID相关联。发送通知的服务器(您的服务器)必须用新的ID更新数据库。

有关更多信息,请查看此文档:

http://developer.android.com/google/gcm/adv.html

他们说:

这是一个规范的ID

在服务器端,只要应用程序运行良好,一切都应该正常工作。但是,如果应用程序中的一个bug触发同一设备的多个注册,则很难调和状态,您可能会收到重复的消息。 GCM提供了一个名为“规范注册ID”的工具,可以轻松地从这些情况中恢复过来。规范注册ID被定义为应用程序请求的最后一次注册的ID。这是服务器在向设备发送消息时应该使用的ID。 如果稍后尝试使用不同的注册ID发送消息,GCM将像往常一样处理请求,但它将在响应的registration_id字段中包含规范的注册ID。确保将存储在服务器中的注册ID替换为此规范ID,因为您使用的ID最终将停止工作。

票数 5
EN

Stack Overflow用户

发布于 2014-03-09 13:22:55

那么,在添加您的注册代码之后,我可以看到您正在使用旧的注册方法。自去年年中以来,这种方法已被废除。它很可能不像新的注册方法那么可靠。

您应该尝试通过Google服务库的GoogleCloudMessaging.register方法注册。这是谷歌推荐的方式。见官方演示这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22101402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档