我正在设置一个使用MySQL存储移动应用程序提供的注册ID的Google云消息传递机制的服务器端。考虑到Google可以发出高达4k个注册ID,我被迫将它们存储在TEXT字段中。到目前为止一切顺利,但问题是我必须处理这种情况:
我想到的可能的解决方案如下:
- 用户登录应用程序
- 应用程序从Google请求注册ID
- 应用程序将新的注册ID发送到应用程序服务器
- 服务器存储该注册ID并将其链接到当前已登录的用户
- 该用户退出登录,另一个用户登录
- 应用程序再次将相同的注册ID发送到服务器
- 服务器必须能够看到该注册ID已经存在于数据库中,但链接到其他用户
- 服务器取消链接以前的用户与该注册ID的关联,并将其链接到新登录的用户
我想到的可能的解决方案如下:
- 计算注册ID的哈希值并强制使其唯一,但可能会产生冲突。
- 我可以将唯一设备ID与注册ID一起存储,并强制该设备ID唯一。但问题是我不知道Android设备ID有多长,而且我认为在某些情况下它不可用。
- 每次接收到新的注册ID时都进行搜索,但我认为这将导致非常低效的操作。