Обновить Parse deviceToken ПОСЛЕ регистрации

В настоящее время я сижу с несколькими пустыми полями deviceToken. Я понял, что это связано с тем, что возникла проблема с добавлением групп до создания объекта установки — это блокировало последующие усилия по созданию.

Сейчас я пытаюсь снова получить этот deviceToken и обновить его в Parse, но проблема в том, что didRegisterForRemoteNotificationsWithDeviceToken больше никогда не запускается после первого раза...

Любой способ получить токен устройства ПОСЛЕ первоначального вызова didRegisterForRemoteNotificationsWithDeviceToken?


person Byron Coetsee    schedule 14.07.2015    source источник
comment
Вы регистрируетесь для получения уведомлений каждый раз, когда запускается ваше приложение? Метод делегата следует вызывать каждый раз при регистрации.   -  person Paulw11    schedule 14.07.2015


Ответы (2)


Это работает для iOS 8:

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}
person Jim Clermonts    schedule 06.09.2015

didRegisterForRemoteNotificationsWithDeviceToken можно вызывать повторно. Просто вызовите код регистрации push в вашем AppDelegate.m, в методе didFinishLaunchingWithOptions.

Вот что я использую:

//Check for iOS 7 vs 8
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}

Вот и все — если вы будете вызывать это каждый раз, вы получите обратный вызов делегата на didRegisterForRemoteNotificationsWithDeviceToken при каждой загрузке.

person Ryan Kreager    schedule 14.07.2015