0

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

现在在我的 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 中调用上述方法?即应用程序正在运行。用户注销并使用不同的用户名重新登录,现在我需要使用该用户名注册设备,我该怎么办?

4

2 回答 2

1

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

于 2013-06-12T03:54:16.317 回答
0

您需要保留 APNS 令牌,这就是您的情况的前进方向。当您的应用程序进入前台时,您将收到registerForRemoteNotificationTypes. 现在

  1. 如果有的话,从 NSUserDefaults 中删除旧的 APNS 令牌(或任何你喜欢的持久性)
  2. 将 APNS 令牌保存到 NSUserDefaults
  3. 并使用保存的令牌。
于 2013-06-12T08:56:50.587 回答