Android 保存GCM密钥ID的最佳实践

Android 保存GCM密钥ID的最佳实践,android,sql,push-notification,google-cloud-messaging,Android,Sql,Push Notification,Google Cloud Messaging,因此,GCM为不同的设备生成不同的注册ID。在正常情况下,用户可以拥有一部手机/平板电脑或多部手机/平板电脑,每部手机/平板电脑都具有唯一的注册id 在这种情况下,将每个设备的GCM密钥保存给同一用户的最佳做法是什么 更新1 我已经读过并且人们正在使用的一种方法是读取、散列并将设备的Mac地址和密钥一起保存在数据库中。这确实解决了问题,但这是最好的解决方案还是有更好的解决方案 您可以使用,它允许您将属于同一用户的多个注册ID分组到一个通知密钥下,然后向该密钥发送一条消息将其发送到与其连接的所有注

因此,GCM为不同的设备生成不同的注册ID。在正常情况下,用户可以拥有一部手机/平板电脑或多部手机/平板电脑,每部手机/平板电脑都具有唯一的注册id

在这种情况下,将每个设备的GCM密钥保存给同一用户的最佳做法是什么

更新1

我已经读过并且人们正在使用的一种方法是读取、散列并将设备的Mac地址和密钥一起保存在数据库中。这确实解决了问题,但这是最好的解决方案还是有更好的解决方案

您可以使用,它允许您将属于同一用户的多个注册ID分组到一个
通知密钥下,然后向该密钥发送一条消息将其发送到与其连接的所有注册ID

另一种方法是分别向每个注册ID发送消息


在这两种情况下,您都应该有一个将用户ID映射到多个注册ID的DB

数据库有什么问题?我的数据库中已经有了它们,但它会给应用程序带来问题,例如,如果应用程序崩溃,用户清除所有数据并再次登录,他将获得一个新密钥,现在服务器有两个属于同一用户和设备的密钥。Gcm会通知密钥已更改,但仍会发送多条消息。为了解决这类问题。数据表结构应确保这些问题不会出现occur@DuseanSingh你最后做了什么?两个表:一个用于用户,一个用于gcm密钥?i、 e.一个用户有很多gcm密钥吗?@ChristianFazzini,我不记得是哪个项目的?但在最近的项目中,我有两个表,一个是键表,另一个是用户表。密钥表有一个唯一的设备id,由设备id、mac和其他内容计算得出。设备id对于每个设备都是唯一的。当GCM通知密钥已失效时,我们将移除该密钥。当用户登录时,我们将密钥的所有者更改为新登录的用户。当用户注销时,我们删除密钥。通过这种方式,我们解决了大多数问题。为了获得通知密钥,我需要将所有注册id都提供给特定的用户。我想知道如何保存这些钥匙。例如,我需要在中包含多少列database@DuseanSingh用户ID需要一列,注册ID需要一列。因为注册ID很长,所以创建一个包含注册ID哈希值的附加列对于查询很有用(因为您可以索引该列,而注册ID太大,无法索引)。您可能希望引入一个额外的列来标识设备(为每个设备分配的一些随机标识符)。