热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

两个不同的设备可以有相同的GCM注册ID吗?-CantwodifferentdeviceshavesameGCMRegistrationID?

IhavebeenworkingonGCMformyAndroidappforabit.IhavenoticedthatalmosteverytimeIhav

I have been working on GCM for my Android app for a bit. I have noticed that almost every time I have a different GCM Registration ID for my device. Is it safe for me to keep a UNIQUE_KEY constrain on GCM Registration ID? And delete all the IDs with the error NotRegistered and update all the IDs which are canonical_ids?

我已经为我的Android应用开发了一段时间的GCM。我注意到,几乎每次我的设备都有不同的GCM注册ID。对我来说,在GCM注册ID上保留UNIQUE_KEY约束是安全的吗?然后删除所有带有错误节点的id并更新所有的id,这些id都是规范化的。

4 个解决方案

#1


11  

a registration ID is tied to a particular Android application running on a particular device.

注册ID与运行在特定设备上的特定Android应用程序绑定。

(from GCM Overview)

(从GCM概述)

Two different devices would always have a different registration id. Even different apps on the same device have different registration ids.

两个不同的设备都有不同的注册id,即使是同一设备上不同的应用程序也有不同的注册id。

Functionally it is safe to keep a UNIQUE_KEY constraint on the Registration ID, but since the Registration ID can be long (up to 4096 bytes, though in practice it's usually much shorter), some databases may prevent you from defining an index or constraint on such a large column. You might want to use a one way hash function that would map the Registration ID to a smaller value, store that value in a smaller column and have the constraint/index on that column.

在功能上,在注册ID上保留UNIQUE_KEY约束是安全的,但是由于注册ID可以很长(最多4096字节,虽然实际上它通常要短得多),一些数据库可能会阻止您在这么大的列上定义索引或约束。您可能希望使用单向散列函数,该函数将注册ID映射到较小的值,将该值存储在较小的列中,并在该列上具有约束/索引。

When you get NotRegistered error, you should indeed delete that registration ID from your DB (or at least mark it with a status that says it is inactive, and stop sending messages to it). But if the app will be re-installed on a device from which it was earlier uninstalled, the app may get the same registration ID when it registers again to GCM, so your server should allow registration IDs that at one point gave NotRegistered to become active again.

当您获得notregi注册错误时,您确实应该从您的DB中删除注册ID(或者至少将它标记为一个状态,表明它是不活动的,并停止向它发送消息)。但是,如果应用程序将被重新安装到之前卸载的设备上,那么当应用程序再次注册到GCM时,它可能会获得相同的注册ID,因此服务器应该允许注册ID,而在某个时刻,注册ID不会重新激活。

You should update the old registration ID when you get canonical registration ID in the response from Google.

当您在谷歌响应中获得规范注册ID时,您应该更新旧的注册ID。

#2


2  

It depends. In some cases, I have proved that Two or more devices can have identical Registration IDs. I have a push enabled phonegap app, that is made to run in several devices, all the same kind (brand, model, specs...). For saving time reasons, I decided to make a nandroid backup of one device and then copy that into the others. The result: many devices, the same Reg ID. Hope this helps.

视情况而定。在某些情况下,我已经证明了两个或多个设备可以具有相同的注册id。我有一个支持push的phonegap应用,它可以在不同的设备上运行,所有的设备都是一样的(品牌、型号、规格……)为了节省时间,我决定对一个设备进行nandroid备份,然后将其复制到其他设备中。结果是:许多设备,相同的Reg ID。希望这能有所帮助。

#3


0  

I am also confused regarding this due to following region, But i am not getting same registration Id as i Creates two demo also.

由于下面的区域,我也很困惑,但是我并没有得到相同的注册Id,因为我也创建了两个demo。

1) But one region, There is Particular sender id for Particular Application and according to that sender id there is a unique Registration id

1)但在一个区域,特定应用程序有特定的发送方id,根据发送方id有唯一的注册id

Check for the Bold Line.As according to this Registration id always different for different application{Copy this line from http://developer.android.com/google/gcm/gcm.html}

检查粗体行。根据这个注册id对于不同的应用总是不同的{从http://developer.android.com/google/gcm/gcm.html}复制这行

Registration ID An ID issued by the GCM servers to the Android application that allows it to receive messages. Once the Android application has the registration ID, it sends it to the 3rd-party application server, which uses it to identify each device that has registered to receive messages for a given Android application. In other words, a registration ID is tied to a particular Android application running on a particular device.

注册ID: GCM服务器向允许它接收消息的Android应用程序发出的ID。一旦Android应用程序有了注册ID,它就会将其发送到第三方应用程序服务器,后者将使用注册ID来识别每个设备,这些设备已经为给定的Android应用程序接收消息。换句话说,注册ID与运行在特定设备上的特定Android应用程序绑定。

#4


0  

The registration id is unique, what happens sometimes, is that your application changes. If you change the package name, or a whatever key used to be publish, debug or release key, then your registration id changes.

注册id是唯一的,有时发生的是,您的应用程序发生了变化。如果您更改了包名,或者使用了发布、调试或发布键的任何键,那么您的注册id就会更改。


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
author-avatar
纯洁的老宁同志
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有