具有推送通知问题的登录/注销用户

时间:2017-01-04 13:23:36

标签: ios objective-c swift cocoa-touch push-notification

在我的应用中成功实现了推送通知相关的基础并且运行良好。 但是当用户成功注销并使用新用户登录/注册时遇到问题没有得到通知。

YES!此问题适用于DeviceToken

  • 第一次在注册推送通知时收到deviceToken。
  • 将此deviceToken传递给服务器并接收推送通知。
  • 退出此用户并通过其他用户注册/登录
  • 没有获得任何令牌尝试unregisterForRemoteNotifications,但不再使用iOS 10.并且可能不是那样设置的好主意。
  

如果我们可以获得新的设备令牌,那么问题将被重新分配,但可能无法实现。

注意:通过帮助后端方面可能我们可以解决但建议我更好的方式。如果可能的话,我们很酷。

那么我可以为第二个用户做些什么呢?

3 个答案:

答案 0 :(得分:0)

首先,您应该在

中写下通知注册码
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken

方法。然后将该令牌保存在某处,例如在用户默认值

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {

    NSString *token; //extract from devToken
    [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"device_token"];

}

现在成功登录后,将此令牌发送到后端服务器。同样在注销时,在注销请求或其他内容中将相同的令牌发送到后端,并从后端系统取消注册此令牌。

答案 1 :(得分:0)

成功注册远程通知后,将调用

didRegisterForRemoteNotificationsWithDeviceToken一次。您可以像Rahul建议的那样坚持令牌。但是,不要在didRegisterForRemoteNotificationsWithDeviceToken()中读取此值,而是在用户登录后调用的方法中读取它。如果该值存在,请将此令牌发送到您的服务器。您的服务器应删除与先前用户关联的令牌,并将此令牌分配给新用户。从Apple服务器/设备的角度来看,用户未与设备令牌相关联。因此,要么在新用户登录后调用api,要么在服务器端出现令牌映射问题。

答案 2 :(得分:0)

当注销时调用一个将清除该特定用户的设备令牌的Web服务时,您可以做一件事,因此当用户再次注册时,它将注册设备令牌并在注销时将从数据库中清除设备令牌