我正在构建一个类似于Instagram的应用程序。用户上传帖子,其他人可以喜欢。当人们喜欢这篇文章时,我希望帖子作者使用FCM(Firebase云消息传递)获取推送通知。
我的问题是refreshToken
(使用FirebaseInstanceId.getInstance().getToken();
生成)是特定于设备的。因此,如果同一用户从其他设备登录应用程序,我想确保向所有设备发送推送通知。所以这是我提出的解决方案,我想知道它是否是正确的方法:
每次用户登录设备时,我都会将refreshToken
存储到数据库中,当我想生成推送通知时,我可以遍历所有refreshTokens
并向所有人发送推送通知那些设备。
有没有更好的方法来实现这一目标?
注意:我知道设备组消息,我无法使用它,因为我没有应用服务器。而且我不想在客户端进行此操作,因为这需要客户拥有Google帐户。
答案 0 :(得分:0)
是的,实施没问题。
每次用户登录设备时,我都会将
refreshToken
存储到设备中 数据库。
每次用户从设备登录应用程序时,实际上不需要发送设备推送注册ID(在您的情况下为refreshToken)。只有当服务器尚不知道设备(即新设备)时,才需要从设备发送推送注册ID(即refreshToken)。
有没有更好的方法来实现这一目标?
我认为不是。这是您实施的完美方式。但是,我们可能总是会想到几个优化点,例如,跟踪哪些设备已注销,因此您无需再将推送通知发送到该设备。因此,在从设备注销的情况下,从该设备向服务器发送另一个无效的refreshToken请求,以便它不会获得任何进一步的推送通知。这是对当前实施的改进。