0

我知道这是非常基本的,但我需要提取我的设备令牌并将其存储在一个字符串中并将其放在(显示)我的 ViewDidLoad 方法的标签上。可能的解决方案是什么?我是 iOS 开发的新手。我应该使用全局变量吗?或任何可能的解决方案?

这是我的代码。

AppDelegate.m

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken];

NSLog(@"%@", str);

//get the string and display it on the ViewDidLoad method.

}

请帮我。如何使用全局变量来访问该字符串?

在我的 ViewController.m 类

- (void)viewDidLoad
{
   [super viewDidLoad];

   NSString *getToken = @"Token from AppDelegate";

}

类似的东西。

4

2 回答 2

2

您可以将令牌存储到用户默认值中:

[[NSUserDefaults standardUserDefaults] setValue:str forKey:@"DEVICE_TOKEN"];

然后在你的 viewDidLoad 中:

NSString *getToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"DEVICE_TOKEN"];

但还有其他方法:全局变量、持久层NSNotification等。

编辑:

这里有关于如何注册标准用户默认值的信息。

编辑2:

为了获取令牌字符串,我执行以下操作

NSString *deviceTokenString = [deviceToken description];
deviceTokenString = [deviceTokenString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
deviceTokenString = [deviceTokenString stringByReplacingOccurrencesOfString:@" " withString:@""];

然后,deviceTokenString最终获得没有空格或任何其他字符的完整值。刚刚准备好触发推送通知。

于 2013-08-08T08:13:08.930 回答
0

我通常在 UIApplication(或 UIApplication 子类)上创建一个类别来存储当前推送令牌。

@interface MyApplication : UIApplication

@property (nonatomic, copy) NSData *pushToken;

@end

正如@amb 提到的,有很多不同的方法可以解决这个问题。

于 2013-08-08T08:37:21.867 回答