Получение идентификатора устройства перед запуском кода ViewController в IOS

У меня есть этот код кода, чтобы получить идентификатор устройства:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
 NSString *devicetokenRN = [NSString stringWithFormat:@"%@", deviceToken];
 devicetokenRN = [devicetokenRN stringByReplacingOccurrencesOfString:@" " withString:@""];
 devicetokenRN = [devicetokenRN stringByReplacingOccurrencesOfString:@"<" withString:@""];
 devicetokenRN = [devicetokenRN stringByReplacingOccurrencesOfString:@">" withString:@""];


 // send device token for APNS without spaces or <>
 DeviceID *DeviceIdentifier = [[DeviceID alloc ] init];
 // sending it to the Device.h
 [DeviceIdentifier setDeviceID:devicetokenRN];
}

Мне нужно восстановить этот DeviceID как первое, что есть на моем ViewController. Поскольку он не выполняет эту функцию до того, как он запустит контроллер представления, потому что, если я использую NSlog в ViewController, он будет NULL, так как он не запускает это в первую очередь. Мне нужно сначала получить некоторую переменную, прежде чем она запустит UITableView. Любые идеи были бы блестящими.

2 ответа

В AppDelegate вы можете сохранить значение deviceToken в NSUserDefaults, например

поместите эту строку в метод doRegisterForRemoteNotificationsWithDeviceToken в appdelegate.m как это

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

 [[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"DeviceToken"];
 [[NSUserDefaults standardUserDefaults] synchronize];

}

также поместите эту строку кода в свой вид Controller.m и In ViewDidLoad

и Получить это значение.

[[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"];


Вы можете получить и сохранить ваше устройство в NSUserDefaults

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
 NSUUID *identifierForVendor = [[UIDevice currentDevice] identifierForVendor];
 NSString *deviceId = [identifierForVendor UUIDString];
 NSUserDefaults *userRegistrarionDetails = [NSUserDefaults standardUserDefaults];
 [userRegistrarionDetails setObject:deviceId forKey:@"deviceID"];
 [userRegistrarionDetails synchronize];
}

И вы можете получить в любом месте своего проекта

NSUserDefaults *userRegistrarionDetails = [NSUserDefaults standardUserDefaults];
NSString * deviceId = [userRegistrarionDetails objectForKey:@"deviceID"];
NSLog(@"%@", deviceId);

licensed under cc by-sa 3.0 with attribution.