Я могу использовать метод обратного вызова didRegisterForRemoteNotificationWithDeviceToken, чтобы получить токен устройства моего iphone при подписке на push-уведомления. Мой вопрос: как я могу снова получить этот токен позже? Когда пользователь подписывается на что-то в моем приложении, я хочу отправить токен устройства и идентификатор элемента, на который они подписываются... но я не могу понять, откуда взять токен устройства. Я попытался использовать uniqueIdentifer из класса UIDevice, но это значение отличается от исходного токена. Я предполагал, что смогу вызывать registerForRemoteNotificationTypes каждый раз, когда мое приложение начинает создавать токен. Но если я это сделаю, я не уверен, как я могу получить доступ к этому значению из другого класса (мой обратный вызов didRegisterForRemoteNotificationWithDeviceToken находится в главном делегате приложения). Спасибо за любую помощь для новичка в C!
Как запросить токен устройства на iphone
Ответы (1)
Я бы установил свойство в вашем appDelegate, к которому можно получить доступ из любого места, и установил бы его на токен устройства.
// .h
@interface SomeAppDelegate : NSObject <UIApplicationDelegate> {
NSString * dToken;
}
@property (nonatomic, retain) NSString * dToken;
// .m
@implementation SomeAppDelegate;
@synthesize dToken;
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString * token = [[NSString alloc] initWithData:deviceToken encoding:NSUTF8StringEncoding];
[self setDToken:token];
[token release];
}
- (void)dealloc {
[dToken release]
[super dealloc];
}
Затем вы можете получить доступ к этому токену в любом месте, используя:
NSString * token = [(SomeAppDelegate*)[[UIApplication sharedApplication] delegate] dToken];
person
Tom Irving
schedule
09.05.2010
Спасибо за ваш ответ. Я могу установить переменную в делегате и получить ее, используя [self deviceId] из класса делегата. Однако, когда я пытаюсь получить его с помощью предоставленного вами кода, он не работает. Приложение компилируется, но когда оно доходит до этой строки, я получаю ошибку EXC_BAD_ACCESS без какой-либо другой информации. У меня много проблем с синтаксисом объектива c, и отсутствие разумного сообщения об ошибке делает это очень трудным для понимания. Любая помощь будет принята с благодарностью.
- person Greg; 10.05.2010
Неважно, я заставил его работать. Я не уверен, почему, но когда я не выпустил токен String, он работал нормально без каких-либо проблем.
- person Greg; 10.05.2010