如何在didRegisterForRemoteNotificationsWithDeviceToken以外的方法中使用设备令牌?

时间:2011-10-18 08:05:57

标签: ios iphone objective-c apple-push-notifications appdelegate

我通过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 个答案:

答案 0 :(得分:2)

在你的app委托类中定义方法+ (CustomAppDelegate *)sharedAppDelegate,其实现应如下所示:

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

其中CustomAppDelegate是您的应用委托类的名称。

在方法中,您需要获取str变量的值,您应该输入以下内容:

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

其中CustomAppDelegate是您的app委托类的名称,str是存储设备令牌的合成属性(或方法名称)。

在致电sharedAppDelegate之前,请不要忘记import "CustomAppDelegate.h"

答案 1 :(得分:2)

您可以将设备令牌添加到NSUserDefaults字典中,如下所示:

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

然后可以通过其他方法访问它:

NSString *deviceToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"deviceToken"];