Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 两个不同的设备能否具有相同的GCM注册ID?_Android_Mysql_Push Notification_Google Cloud Messaging - Fatal编程技术网

Android 两个不同的设备能否具有相同的GCM注册ID?

Android 两个不同的设备能否具有相同的GCM注册ID?,android,mysql,push-notification,google-cloud-messaging,Android,Mysql,Push Notification,Google Cloud Messaging,我一直在为我的Android应用程序开发GCM。我注意到,几乎每次我的设备都有不同的GCM注册ID。我在GCM注册ID上保留唯一\u密钥约束是否安全?删除所有出现错误NotRegistered的ID,并更新所有canonical_id 注册ID绑定到在特定设备上运行的特定Android应用程序 (来自) 两个不同的设备始终具有不同的注册id。即使同一设备上的不同应用也具有不同的注册id 从功能上讲,在注册ID上保留唯一的_键约束是安全的,但由于注册ID可能很长(最多4096字节,但实际上通常要短

我一直在为我的Android应用程序开发GCM。我注意到,几乎每次我的设备都有不同的GCM注册ID。我在GCM注册ID上保留
唯一\u密钥
约束是否安全?删除所有出现错误
NotRegistered
的ID,并更新所有
canonical_id

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

(来自)


两个不同的设备始终具有不同的注册id。即使同一设备上的不同应用也具有不同的注册id

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

当您收到
NotRegistered
错误时,您确实应该从数据库中删除该注册ID(或者至少将其标记为非活动状态,并停止向其发送消息)。但是,如果应用程序将重新安装在先前卸载过的设备上,则当应用程序再次注册到GCM时,可能会获得相同的注册ID,因此您的服务器应允许一度给出
notregisted
的注册ID再次激活

当从Google的响应中获得规范注册ID时,应该更新旧的注册ID

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

由于以下区域的原因,我对此也感到困惑,但我没有得到相同的注册ID,因为我还创建了两个演示

1) 但在一个地区,对于特定的应用程序有特定的发送者id,并且根据该发送者id有一个唯一的注册id

检查粗体行。根据此注册id,对于不同的应用程序总是不同的{从}复制此行}


注册ID GCM服务器向Android应用程序发布的一个ID,允许它接收消息。一旦Android应用程序拥有注册ID,它就会将其发送到第三方应用程序服务器,第三方应用程序服务器使用该ID识别已注册以接收给定Android应用程序消息的每个设备换句话说,注册ID绑定到在特定设备上运行的特定Android应用程序

注册id是唯一的,有时会发生的情况是您的应用程序发生更改。
如果您更改了软件包名称,或者更改了用于发布、调试或发布的任何密钥,则您的注册id将更改。

谢谢。我为未注册的ID实现了drop方法,为规范ID实现了edit方法。再次澄清一下,谷歌是否保证ID是唯一的?因为我没有找到任何官方的说法。再次感谢。请回复。@aaswadsatte我在我的回答中添加了GCM概述中的一句话。我想你可以把这句话解释为对唯一性的保证。“两个不同的设备总是有不同的注册id。即使同一设备上的不同应用也有不同的注册id。”-这句话来自哪里?我没有在GCM概述的链接上找到它。我这样问是因为我在我的应用程序中看到了不同设备的注册ID的副本