如何在另一个不是AppDelegate的课程中获得devicetoken?

时间:2012-12-18 22:21:59

标签: ios xcode ios6 appdelegate devicetoken

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

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

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

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

2 个答案:

答案 0 :(得分: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。您可以使用任何类型的全局状态,单例对象,注册表或依赖项注入来传递值。你如何做到这一点取决于你;这只是一个例子。

答案 1 :(得分:0)

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

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

现在您可以在任何其他类

中使用singletonObject.deviceString