Получить данные из AppDelegate в ViewController в iOS

У меня есть проект IOS я Xcode и мне нужно получить токен устройства из Appdelegate для просмотра контроллера, вот код делегата приложения:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{    
    [[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

И тогда, ввиду контроллера:

[super viewDidLoad];    
[[NSUserDefaults standardUserDefaults] objectForKey:@"token"];

Когда я пробовал это в первый раз, оно работало, но в следующий раз приложение зависало... Когда я удаляю этот код из контроллера представления, он работает, поэтому, должно быть, он ошибается... Можете ли вы помочь мне?

1 ответ

Решение

Прежде всего, удалите ваше приложение с телефона / симулятора.
Потому что NSUserDefaults может содержать неверные данные для вашего ключа.

введите описание изображения здесь

затем замените ваш код на эти,

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    if(deviceToken){
        [[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
}


В viewDidLoad,

- (void)viewDidLoad
{
    [super viewDidLoad];
    id token = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
    if(token){
        NSLog(@"I have got the token");
    }else NSLog(@"no token");
}
Другие вопросы по тегам