我一直在为我的
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在某一时刻未注册才能生效再次.