我目前在研究一款在线离线支持应用程序,并正在了解 APNS 的使用。当我的应用程序仅处理单个用户时(就像短信一样),理解起来非常容易。
我的理解是,安装到特定设备的每个应用程序都将拥有自己的设备令牌(即使取消注册 APNS 并重新注册后也不会更改)。因此,当用户从不同设备登录时,APNS 以及服务器可以进行识别。
然而,当我尝试实现多帐户应用程序(就像 Facebook 一样,不同的人可以使用同一手机登录)时,出现了一些问题。
当用户 A 登录并且应用程序处于后台状态时,它确实会接收到通知。
但是当用户 A 登出(当手机没有互联网连接时,无法立即更新服务器以删除帐户),然后用户 B 登录时,同时服务器尝试向手机推送用户 A 的通知时,该通知已被手机接收(但那是用户 A 的通知),并且用户 B 将收到该通知(在实际场景中永远不应该发生)。
看来 APNS 无法检查应用程序内的帐户身份验证。
所以,我的问题是:
1. 是否有任何方法可以检查并从手机上删除通知(我已经阅读了 Apple Doc. 并注意到有一个 QoS 存储最后一条通知)? 2. 在使用 APNS 时,如何处理此类身份验证问题的最佳实践?
如果我有任何概念上的误解,请纠正我。希望我的问题不会听起来愚蠢和笨拙,并且没有任何问题重复...
我的理解是,安装到特定设备的每个应用程序都将拥有自己的设备令牌(即使取消注册 APNS 并重新注册后也不会更改)。因此,当用户从不同设备登录时,APNS 以及服务器可以进行识别。
然而,当我尝试实现多帐户应用程序(就像 Facebook 一样,不同的人可以使用同一手机登录)时,出现了一些问题。
当用户 A 登录并且应用程序处于后台状态时,它确实会接收到通知。
但是当用户 A 登出(当手机没有互联网连接时,无法立即更新服务器以删除帐户),然后用户 B 登录时,同时服务器尝试向手机推送用户 A 的通知时,该通知已被手机接收(但那是用户 A 的通知),并且用户 B 将收到该通知(在实际场景中永远不应该发生)。
看来 APNS 无法检查应用程序内的帐户身份验证。
所以,我的问题是:
1. 是否有任何方法可以检查并从手机上删除通知(我已经阅读了 Apple Doc. 并注意到有一个 QoS 存储最后一条通知)? 2. 在使用 APNS 时,如何处理此类身份验证问题的最佳实践?
如果我有任何概念上的误解,请纠正我。希望我的问题不会听起来愚蠢和笨拙,并且没有任何问题重复...