The*_*igK 8 firebase-cloud-messaging
我正在考虑一个场景,用户在多个设备上安装应用程序,比如移动设备和桌面设备;并生成两个不同的令牌。
我目前的计划是将用户的令牌都存储在数据库中。但是,当令牌过期并生成新令牌时,我不确定如何处理这种情况?
例如,这可能是简单的 db 结构 -
id | user_id | token
-------------------------
1 | 1 | asdlgkj090sdf8q (desktop)
2 | 1 | zlkroqiuoiquoio (mobile)
3 | 2 | mnnjnjnjnjojuhq
4 | 2 | 498slkdsflksjfl
Run Code Online (Sandbox Code Playgroud)
如果移动令牌更新;我无法知道要更新哪一行。
我如何处理这种情况?
如果要在生成新令牌后删除旧令牌,我可以想到两种方法:
选项 1:引入客户 ID
您可以为每个客户端提供一个唯一的 ID,用于识别它。当您将新的推送令牌发送到服务器时,您需要确保还将客户端 ID 传递给服务器。您的数据库结构将如下所示:
id | user_id | client_id | token
------------------------------------------------------
1 | 1 | tthdh | asdlgkj090sdf8q (desktop)
2 | 1 | di4dq | zlkroqiuoiquoio (mobile)
3 | 2 | 5efgd | mnnjnjnjnjojuhq
4 | 2 | 56eff | 498slkdsflksjfl
Run Code Online (Sandbox Code Playgroud)
在您的更新脚本(在服务器上)中,您将检查给定客户端 ID 是否存在推送令牌,然后替换旧的或插入新行。
选项 2:记住旧令牌
第二种选择是将当前令牌存储在客户端上,如果它被更新,则将旧令牌和新令牌都发送到服务器。然后搜索旧标记并替换它(如果旧标记不存在,则插入一个新行)。
如果您想了解给定令牌是否已过期,请查看此答案。我在 Firebase 文档中看到的另一种方法是删除用于在发送消息失败时发送推送消息的令牌。
| 归档时间: |
|
| 查看次数: |
2636 次 |
| 最近记录: |