我希望有一些“订阅列表”,它们会使用GCM向用户分发不同类型的通知(例如,采用新闻类别:一般,体育,金融等)。
我希望用户能够注册这些列表(或取消订阅)。我可以在服务器端处理这个逻辑,方法是在订阅表中添加/删除用户的registration_ids,但是如何才能唯一且安全地识别它们呢?
我正在寻找能够充当唯一用户ID的东西,作为服务器(和数据库)与客户端应用程序(用户的registration_id)之间的粘合剂。
答案 0 :(得分:0)
这是一个可能的解决方案:
首先,您的应用必须有一些登录过程,您的服务器将为您的应用程序的每个用户分配一些唯一标识符。此外,如果您希望在多个设备上支持使用您的应用的同一用户,您的服务器还必须为安装了您的应用的每个设备分配一些唯一的设备标识符。
您的数据库可以遵循以下关系:
user-id to device-ids - 一对多关系
device-id to registration-id / s - 这可以是一对一关系(如果您选择仅存储每个设备的最新注册ID)或一对多关系商店(如果您选择)保留GCM曾分配给设备的所有注册ID。
list-id to user-ids - 多对多关系
您的订阅列表可以包含用户ID。这样,当您想要向某个列表中的所有用户发送消息时,您将为每个用户找到所有匹配的设备ID,然后对于每个设备ID,您将找到最新的注册-id。