IOS7,8,9接收先前的推送通知行为

时间:2016-04-01 03:31:24

标签: ios iphone ipad apple-push-notifications

我正在尝试开发一个应用以通过用户帐户接收推送通知。

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

注册成功后,deviceToken将链接到用户帐户。

有一种情况,当userA完成注册并卸载应用程序时,该应用程序理想情况下不会收到来自APN的推送通知,但另一个用户B安装它而无需注册,使用相同的iPhone,iPhone将收到userA的推送通知,因为deviceToken与之前的相同。

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

如何解决?感谢

1 个答案:

答案 0 :(得分:3)

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

1)用户登录设备后取消注册您的设备以进行远程通知。这样,即使应用服务器发送通知,也会确保下一组通知无法到达设备设备。

如何取消注册的示例代码(请参阅注销方法):

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

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

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

ii)存储设备令牌并与当前用户链接(Say userB)。

希望这会有所帮助。