0

当发生这种情况时,我的应用程序当前正在接收与以前的应用程序用户帐户关联的推送通知:

  1. 播放器安装应用程序并注册为“bob”
  2. bob 向 Web 服务注册的设备令牌
  3. 播放器重新安装应用程序并注册为“phil”(在同一设备上)
  4. phil 向网络服务注册的设备令牌

即使玩家现在以“phil”身份登录,他们仍将继续接收与“bob”以及“phil”关联的帐户的推送通知。

如果我使用 UDID,我可以确保每个设备只注册一个设备令牌,因此从玩家的旧网络服务帐户“bob”中删除 UDID 和设备令牌,从而确保每个设备只有一个活动帐户。当玩家注册为“phil”并且网络服务器可以看到玩家已经使用相同的 UDID 注册了一个新帐户,然后从具有该 UDID 的任何旧帐户(即“bob”帐户)。在有人再次登录该帐户(在同一设备或新设备上)之前,不会再向 bob 帐户发送推送通知。

然而,这在使用 CFUDIDCreate 时效果不佳,因为它可能会在安装之间发生变化。

如何确保仅接收当前登录用户的推送通知?或者,换一种说法,如何确保我的 Web 服务器每个设备只存储一个设备令牌?

4

3 回答 3

2

您可以将 APNS 令牌设置为密钥服务器端,而不是设备特定标识符。重新安装应用程序时,您会将现有的(APNS 令牌,“bob”)记录替换为(APNS 令牌,“phil”),从而在重新安装应用程序时删除令牌与 bob 帐户之间的链接。

据我所知,APNS 令牌在重新安装应用程序之间不会发生变化,所以这应该可以工作。(如果它确实在未来版本的 iOS 中重新安装之间发生了变化,这不会成为问题,因为旧令牌将不再有效,因此设备不会收到发送给 bob 的通知)。

于 2012-08-22T09:59:50.317 回答
1

如果重新安装应用程序,生成的设备令牌是否与以前相同?我想不是。您在服务器上注册了两种不同的设备令牌,一种用于“bob”,另一种用于“phil”,或者没有?

在这种情况下,指向“bob”的令牌是无效的,您可以使用APNS 反馈服务对其进行过滤,该服务会不断更新“每个应用程序的失败交付尝试的设备列表。这些设备是由以二进制格式编码的设备令牌标识。提供者应定期查询反馈服务以获取其应用程序的设备令牌列表,每个设备令牌都由其主题标识。然后,在验证该应用程序最近没有被重新在已识别的设备上注册,提供商应停止向这些设备发送通知。”

祝你好运!

于 2012-08-22T09:52:39.790 回答
0

在 iOS 9.x 之后,每次安装应用程序时,设备令牌始终是不同且唯一的。您可以将 UUId 令牌保存到钥匙串。即使在重新安装应用程序后,钥匙串也始终持有令牌。您可以在此处找到钥匙串文档

于 2016-05-11T09:08:55.030 回答