2

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

4

1 回答 1

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];
于 2010-05-09T10:11:25.167 回答