2

下午好。我是巴西人,所以请原谅我的任何英语错误!

我正在向我自己的设备发送推送通知。我可以在我的设备令牌中获取AppDelegate.m

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {  
    NSLog(@"Device Token Global : %@", deviceToken);   
}

但是我有一个名为的类LoginViewController.m,我在其中执行登录并将其deviceToken发布到 web 服务(将其插入到 mySQL 表中)。如何deviceToken在我的 LoginViewController.m 类中将其作为字符串获取?

4

2 回答 2

9

将令牌转换为字符串:

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

NSUserDefaults使用您选择的特定于应用程序的密钥存储令牌:

[[NSUserDefaults standardUserDefaults] setObject:tokenString forKey:@"MyAppSpecificGloballyUniqueString"];

然后,在您的应用程序的其他地方检索它:

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

您不必使用NSUserDefaults. 您可以使用任何类型的全局状态、单例对象、注册表或依赖注入来传递值。你如何做到这一点取决于你;这只是一个例子。

于 2012-12-19T03:59:54.630 回答
0

使用单例类并创建一个设备字符串(deviceString)。

singletonObject.deviceString = [deviceToken description];
singletonObject.deviceString = [tokenString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
singletonObject.deviceString = [tokenString stringByReplacingOccurrencesOfString:@" " withString:@""];

现在您可以在任何其他类中使用 singletonObject.deviceString

于 2012-12-19T11:06:06.770 回答