android – 两个不同的设备可以具有相同的GCM注册ID?

我一直在为我的 Android应用程序在GCM上工作.我注意到,几乎每次我的设备都有不同的GCM注册ID.在GCM注册ID上保留UNIQUE_KEY约束是否安全?并删除所有具有NotRegistered错误的ID,并更新所有的canonical_ids的ID?

解决方法

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

(从GCM Overview)

两个不同的设备将始终具有不同的注册ID.即使在同一设备上的不同应用程序也有不同的注册码.

在功能上,可以安全地在注册ID上保留UNIQUE_KEY约束,但是由于注册ID可能很长(高达4096字节,但实际上通常要短得多),因此某些数据库可能会阻止您在其上定义索引或约束一个大列.您可能想要使用将注册ID映射到较小值的单向散列函数,将该值存储在较小的列中,并在该列上具有约束/索引.

当您获得NotRegistered错误时,您应该从您的数据库中删除该注册ID(或至少标记它的状态表示它不活动,并停止发送消息).但是,如果应用程序将重新安装在早期卸载的设备上,则应用程序可以在向GCM重新注册时获得相同的注册ID,因此您的服务器应允许注册ID在某一时刻未注册才能生效再次.

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

相关文章

文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...
文章浏览阅读8.9w次,点赞4次,收藏43次。前言:在Android上...
文章浏览阅读1.1w次,点赞4次,收藏17次。Android Studio提供...