Как использовать токен устройства в методе, отличном от didRegisterForRemoteNotificationsWithDeviceToken? - PullRequest
2 голосов
/ 18 октября 2011

Я получил токен устройства методом 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".

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

Ответы [ 2 ]

2 голосов
/ 10 февраля 2013

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

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

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

NSString *deviceToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"deviceToken"];
2 голосов
/ 18 октября 2011

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

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

где CustomAppDelegate - имя класса делегата приложения.

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

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

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

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

...