Как использовать токен устройства в методе, отличном от didRegisterForRemoteNotificationsWithDeviceToken?

Я получил токен устройства с помощью метода didRegisterForRemoteNotificationsWithDeviceToken. Я хотел использовать токен устройства другим способом. Я попробовал это таким образом,

В методе didRegisterForRemoteNotificationsWithDeviceToken:

str = [NSString stringWithFormat:@"%@",deviceToken];
// str is the NSString which is declared in the appDelegate.h file as global variable

В методе didReceiveRemoteNotification:

 NSLog(@"Device Token : %@",str);  

Когда я делаю так, Device Token возвращается как "nosniff".

Как я могу сохранить этот токен устройства в глобальной переменной и использовать его в другом классе или в другом методе.


person user995178    schedule 18.10.2011    source источник


Ответы (2)


Вы можете добавить токен устройства в словарь NSUserDefaults следующим образом:

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

Затем к этому можно получить доступ другими методами, например:

NSString *deviceToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"deviceToken"];
person TooDiesel    schedule 10.02.2013

В классе делегата вашего приложения определите метод + (CustomAppDelegate *)sharedAppDelegate, реализация которого должна выглядеть так:

+ (CustomAppDelegate *)sharedAppDelegate
{
     return (CustomAppDelegate *) [UIApplication sharedApplication].delegate;
}

где CustomAppDelegate — это имя класса делегата вашего приложения.

В методе вам нужно получить значение переменной str, вы должны ввести следующее:

NSString *token = [[CustomAppDelegate sharedAppDelegate] str];

где CustomAppDelegate — это имя класса делегата вашего приложения, а str — синтезированное свойство (или имя метода), в котором хранится токен устройства.

Прежде чем звонить sharedAppDelegate, не забудьте import "CustomAppDelegate.h"

person Nekto    schedule 18.10.2011
comment
Это открывает экран запуска приложения, но затем все пустые контроллеры представления не загружаются, есть ли какой-либо альтернативный пример, который вы можете привести, поскольку я пробовал это, но --> Запуск приложения --> DidfinishlaunchwithOption Called --> Контроллер начального представления не вызывается для viewdidload, если я помещу это [[UIapplication sharedApplication] setDelegate:self] в завершение запуска - person Vicky Dhas; 04.10.2016