当发生此类情况时,我的应用程序当前正在接收与先前应用程序用户帐户关联的推送通知:
即使玩家现在以“phil”身份登录,他们仍会继续接收与“bob”以及“phil”相关联的帐户的推送通知。
如果我使用UDID,我可以确保每个设备只注册一个设备令牌,因此从播放器的旧Web服务帐户“bob”中删除UDID和设备令牌,从而确保每个设备只有一个活动帐户。当玩家注册为“phil”且Web服务器可以看到玩家已注册具有相同UDID的新帐户,然后从具有该UDID的任何旧帐户中删除UDID和设备令牌(即“bob”)时,就会发生这种情况。帐户)。在有人再次登录该帐户(在同一台设备或新设备上)之前,不会再向推送帐户发送推送通知。
但是,使用CFUDIDCreate时这不会很好,因为它可能会在安装之间发生变化。
如何确保仅接收当前登录用户的推送通知?或者,换句话说,我如何确保我的Web服务器每个设备只存储一个设备令牌?
答案 0 :(得分:2)
您可以将APNS令牌设为密钥服务器端而不是设备特定标识符。重新安装应用程序时,您将用(APNS令牌,“phil”)替换现有(APNS令牌,“bob”)记录,从而在重新安装应用程序时删除令牌和bob帐户之间的链接。
据我所知,APNS令牌在重新安装应用程序之间没有变化,所以这应该有效。 (如果在未来版本的iOS中重新安装之间确实发生了变化,这不会有问题,因为旧令牌将不再有效,因此设备不会收到发送给bob的通知)。
答案 1 :(得分:1)
如果重新安装应用程序,生成的设备令牌与以前相同?我想不是。您在服务器上注册了两个不同的设备令牌,一个用于'bob'而另一个用于'phil',或者不是?
在这种情况下,令牌引用'bob'无效,您可以使用APNS Feedback Service对其进行过滤,该{{3}}会不断更新“使用每个应用程序的设备列表,其中有失败的交付设备由以二进制格式编码的设备令牌识别。提供者应定期查询反馈服务以获取其应用程序的设备令牌列表,每个设备令牌由其主题标识。然后,在验证应用程序没有最近在已识别的设备上重新注册,提供商应停止向这些设备发送通知。“
祝你好运!答案 2 :(得分:0)
在iOS 9.x之后,设备令牌在应用程序的每次安装时始终是独特且唯一的。您可以将UUId令牌保存到Keychain。即使在重新安装应用程序后,钥匙串也始终保留令牌。您的钥匙串文档可以找到here