下午好。我是巴西人,请原谅我的任何英文错误!
我正在向自己的设备发送推送通知。我可以在AppDelegate.m
:
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
NSLog(@"Device Token Global : %@", deviceToken);
}
但我有一个名为LoginViewController.m
的类,我在其中执行登录并将deviceToken
发送到web服务(将其插入到mySQL表中)。如何在LoginViewController.m类中将此deviceToken
作为字符串获取?
答案 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