我知道之前已经讨论过,但我找到的唯一解决方案(规范ID)在我的场景中不起作用。
情景:
现在为两个用户帐户提供通知。根据我的理解,使用cannonical GCM Reg ID只会合并这些ID并阻止发送重复通知。在这种情况下,应用程序会收到不应该交付的其他用户的通知。
有没有解决方法?我只能想到卸载应用程序时会主动取消注册,但在我读过的另一个帖子中,卸载时无法执行代码。
答案 0 :(得分:2)
根据我的理解,使用cannonical GCM Reg ID只会整合这些ID并阻止发送重复通知。
这是查看它的一种方式,但更简单的说明,Canonical ID就像说" 您使用的旧ID已过期,删除它(如果您保存它)并使用我改为"。
这使得有点奇怪的是,当用户卸载应用程序时,InstanceID应该无效。 (参见文档here)。
我认为您可以做的是确保删除令牌,您可以调用deleteInstanceId()
撤消所有令牌,然后重新注册。
但是为了确保该消息是针对目标用户的,您可以参考docs中所述的内容(第一个类似于@ Ak9637所说的内容):
确保邮件发送给目标用户:
应用服务器可以维护当前用户和注册令牌之间的映射。
然后,客户端应用可以检查以确保收到的消息与登录用户匹配。
答案 1 :(得分:1)
当您在令牌数据库中注册时,您可以简单地检查当您收到用户B的令牌时,只需检查它是否已经与任何用户关联,如果它只是取消该字段并将新令牌保存到新用户用户。 由于令牌标识设备而非用户。
如果您希望完全自主并控制与您的应用相关的通知,您应该使用数据通知而不是消息通知,这将避免操作系统处理通知而不是您的应用