iOS:推送通知并在登录时重新注册设备。

时间:2013-06-12 03:34:13

标签: iphone ios apple-push-notifications

每次用户登录时,我都需要注册设备以进行推送通知。

现在我的AppDelete.m中有以下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert];
}

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

    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    token = [[token componentsSeparatedByString:@" "] componentsJoinedByString:@""];

    [self.pushClient registerDeviceToken:token withUser:loggedInUserName onSuccess:^{
        NSLog(@"successful registration");
    } onFailure:^(NSError *error) {
        NSLog(@"error: %@", [error userInfo]);
    }];
}

Q值。每次用户登录时,我需要在App Delegate中调用上述方法吗?即应用程序正在运行。用户注销并使用其他用户名重新登录,现在我需要使用该用户名注册设备,我该怎么办?

2 个答案:

答案 0 :(得分:1)

用户登录后,您始终可以调用registerForRemoteNotificationTypes方法。

答案 1 :(得分:0)

你需要坚持使用APNS令牌,这就是你的情况。 当您的应用程序到达前台时,您将在registerForRemoteNotificationTypes中接听电话。现在

  1. 从NSUserDefaults删除旧的APNS令牌(如果有的话(或任何你喜欢的持久性)
  2. 将APNS令牌保存到NSUserDefaults
  3. 并使用已保存的令牌。