如何在iphone上请求设备令牌

时间:2010-05-08 19:53:34

标签: iphone push push-notification

我可以使用didRegisterForRemoteNotificationWithDeviceToken回调方法在订阅推送通知时获取我的iphone的设备令牌。我的问题是如何在以后再次获得此令牌?当用户订阅我的应用程序中的某些内容时,我想发送设备令牌和他们订阅的项目的ID ...但我无法弄清楚从哪里获取设备令牌。我尝试使用UIDevice类中的uniqueIdentifer,但这个值与原始令牌不同。我想每次我的应用程序开始生成令牌时我都可以调用registerForRemoteNotificationTypes。但是,如果我这样做,我不确定如何从不同的类访问此值(我的didRegisterForRemoteNotificationWithDeviceToken回调位于主应用程序委托中)。感谢您对目标C新手的任何帮助!

1 个答案:

答案 0 :(得分:5)

我会在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];