当发生这种情况时,我的应用程序当前正在接收与以前的应用程序用户帐户关联的推送通知:
- 播放器安装应用程序并注册为“bob”
- bob 向 Web 服务注册的设备令牌
- 播放器重新安装应用程序并注册为“phil”(在同一设备上)
- phil 向网络服务注册的设备令牌
即使玩家现在以“phil”身份登录,他们仍将继续接收与“bob”以及“phil”关联的帐户的推送通知。
如果我使用 UDID,我可以确保每个设备只注册一个设备令牌,因此从玩家的旧网络服务帐户“bob”中删除 UDID 和设备令牌,从而确保每个设备只有一个活动帐户。当玩家注册为“phil”并且网络服务器可以看到玩家已经使用相同的 UDID 注册了一个新帐户,然后从具有该 UDID 的任何旧帐户(即“bob”帐户)。在有人再次登录该帐户(在同一设备或新设备上)之前,不会再向 bob 帐户发送推送通知。
然而,这在使用 CFUDIDCreate 时效果不佳,因为它可能会在安装之间发生变化。
如何确保仅接收当前登录用户的推送通知?或者,换一种说法,如何确保我的 Web 服务器每个设备只存储一个设备令牌?