用户注销后如何可靠地停止接收通知

时间:2019-06-07 13:10:39

标签: firebase firebase-authentication

我有一台服务器和多个客户端(网络和移动客户端)。当我的用户登录时,我想开始向他们发送有关其关注内容的通知。他们注销后,我想停止向他们发送通知。

我发现了许多与我的相似的堆栈溢出问题,但都没有完全回答。

我的问题的结尾是this other question,其中,当用户注销时,可接受的答案是致电deleteInstanceId(),这似乎是最可靠的解决方案,但是在注释中有人粘贴了( GCM)文档“开发人员永远不应将客户端应用注册为注销或在用户之间切换的机制”。我无法在新的Firebase文档中找到相同的通知,但我认为这是相同的概念:InstanceId不应该与用户相关。

我发现的唯一替代方法是使用instanceId向服务器发送“ signOut”请求,并且我的服务器需要从用户帐户中删除关联的instanceId。 但是,如果该API调用未通过怎么办?这似乎是一个非常脆弱的解决方案。

这就是我现在要做的:

  1. 用户身份验证后,将instanceId发送到我的服务器
    • 请确保其他用户未使用相同的instanceId,因为当其他用户在同一设备上注销但API调用未通过时,可能会发生这种情况
  2. 发送通知时,将它们直接发送到已注册的instanceId(最初我曾计划使用主题,但是结合使用令牌,这似乎更加脆弱)。
  3. 用户注销后,向我的API发送一个signOut请求,并从用户中删除instanceId

1 个答案:

答案 0 :(得分:1)

您的问题似乎只是在寻求对设计的验证,这实际上并不是Stack Overflow的目的。 Firebase subreddit可能是解决问题的最佳选择。

但是我会说,如果它对您有用,那么请运行它。还考虑在每条消息中发送目标用户的UID,并让您的应用与当前登录的用户进行比较,以确定它是否到达了正确的目的地。如果不是为了解决问题,则将消息发送回服务器。