Получить данные из 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");
}