将用户帐户链接到设备令牌以进行推送通知

时间:2013-05-03 18:54:46

标签: iphone ios push-notification apple-push-notifications

我设置了一个带有API服务器的应用程序,每个用户在下载应用程序时都可以通过电子邮件或Facebook创建帐户。该信息全部存储在后端。我想启用推送通知,以便它们是特定于用户的。我知道在APNS服务器等后端需要做什么。我的问题是将设备令牌与用户帐户相关联,这样我就可以根据我服务器的逻辑向正确的用户发送正确的信息。

我知道我将此代码放在applicationDidFinishLaunching

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    // Let the device know we want to receive push notifications
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
        (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

    return YES;
}

然后我从这里抓取设备ID:

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
    NSLog(@"My token is: %@", deviceToken);
}

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
    NSLog(@"Failed to get token, error: %@", error);
}

我是否认为当用户登录时我可以将设备令牌发送到我的服务器并将其与该用户关联?我可以在API调用中添加一个属性来处理它,我只想确保它符合Apple的预期做法。然后当用户注销时,我只是从他们的用户名中清除设备令牌,这样如果另一个用户登录到同一设备,我就不会有重复的令牌。

1 个答案:

答案 0 :(得分:4)

这正是你应该做的。在didRegisterForRemoteNotificationsWithDeviceToken中,您可以在本地存储设备令牌,然后,当用户登录时,您可以将带有用户标识符的设备令牌发送到您的服务器。