我知道之前已经讨论过,但是我发现的唯一解决方案(规范ID)在我的方案中不起作用。

场景:


用户安装App并使用其用户帐户A注册
用户收到要发送到该特定用户帐户A的推送通知
用户卸载应用
用户重新安装该应用
用户使用其他用户帐户B注册


现在,两个用户帐户都将收到通知。据我了解,使用规范的GCM Reg ID只会合并这些ID,并阻止发送重复的通知。在这种情况下,应用程序会收到完全不应该传递给其他用户的通知。

有什么解决办法吗?我唯一想到的就是在卸载应用程序时会主动注销,但是在我阅读的另一个线程中,无法在卸载时执行代码。

最佳答案

据我了解,使用规范的GCM Reg ID只会合并这些ID,并阻止发送重复的通知。


那是一种查看方式,但简单起见,Canonical ID就像说“您使用的旧ID已过期,请将其删除(如果保存了),请改用我”。

使这一点有些奇怪的是,当用户卸载应用程序时,InstanceID应该无效。 (请参阅文档here)。

我认为您可以执行以确保删除令牌,可以调用deleteInstanceId()撤消所有令牌,然后重新注册。

但是要确保该消息是针对目标用户的,您可以参考docs中所述的内容(第一个类似于@ Ak9637所说的内容):


  为确保将消息发送给目标用户,请执行以下操作:
  
  
  应用服务器可以维护当前用户和注册令牌之间的映射。
  然后,客户端应用程序可以检查以确保收到的消息与登录用户匹配。

关于android - 重新安装Android App后,该应用会收到有关旧安装的通知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40783393/

10-09 07:23
查看更多