重新安装Android App后,应用程序会收到旧安装的通知

时间:2016-11-24 10:07:12

标签: android push-notification google-cloud-messaging

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

情景:

  • 用户安装应用程序并使用其用户帐户A注册
  • 用户获取旨在传递给此特定用户帐户的推送通知A
  • 用户卸载应用
  • 用户重新安装应用
  • 用户使用其他用户帐户注册B

现在为两个用户帐户提供通知。根据我的理解,使用cannonical GCM Reg ID只会合并这些ID并阻止发送重复通知。在这种情况下,应用程序会收到不应该交付的其他用户的通知。

有没有解决方法?我只能想到卸载应用程序时会主动取消注册,但在我读过的另一个帖子中,卸载时无法执行代码。

2 个答案:

答案 0 :(得分:2)

  

根据我的理解,使用cannonical GCM Reg ID只会整合这些ID并阻止发送重复通知。

这是查看它的一种方式,但更简单的说明,Canonical ID就像说" 您使用的旧ID已过期,删除它(如果您保存它)并使用我改为"。

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

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

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

  

确保邮件发送给目标用户:

     
      
  • 应用服务器可以维护当前用户和注册令牌之间的映射。

  •   
  • 然后,客户端应用可以检查以确保收到的消息与登录用户匹配。

  •   

答案 1 :(得分:1)

当您在令牌数据库中注册时,您可以简单地检查当您收到用户B的令牌时,只需检查它是否已经与任何用户关联,如果它只是取消该字段并将新令牌保存到新用户用户。 由于令牌标识设备而非用户。

如果您希望完全自主并控制与您的应用相关的通知,您应该使用数据通知而不是消息通知,这将避免操作系统处理通知而不是您的应用