IOS7,8,9 收到之前的推送通知行为

IOS7,8,9 receive previous push notification behavior

我正在尝试开发一个应用程序来接收用户帐户的推送通知。

(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

一旦注册成功,deviceToken 将链接到一个用户帐户。

有一种情况,当userA完成注册并卸载应用时,应用理想情况下不会收到来自APNs的推送通知,但另一个用户B没有注册就安装了它,同样iPhone, iPhone 将收到 userA 的推送通知,因为 deviceToken 与之前相同。

事实上,userB不应该使用同一设备接收userA的推送通知。幸运的是,它只存在于 IOS7,8 中,而不存在于 iOS9 中(iOS9 被禁用推送权限,直到用户授予权限)

如何解决?谢谢

处理此问题的一种方法是:

1 ) 一旦用户登录到设备,请立即注销您的设备以进行远程通知。这样,它将确保下一组通知甚至不会到达设备如果应用程序服务器将其发送到设备。

如何注销的示例代码(参见注销方法):

https://github.com/AppLozic/Applozic-iOS-SDK/blob/af7b6b1e9ebeb2d7a7679a887e5d3a17b1b6b4ca/sample-with-framework/Applozic/Applozic/Services/ALRegisterUserClientService.m

2) 重新注册您的设备以进行远程通知,并将新令牌发送到应用程序服务器。对于额外检查,应用程序服务器将执行以下操作。

i) 检查发送到应用程序服务器的设备令牌,如果它与任何其他用户(比如说 userA)链接,则重置该令牌。

ii) 存储设备令牌并链接到当前用户(比如 userB)。

希望这会有所帮助。