Ios 如何在另一个不是AppDelegate的类中获取devicetoken?
下午好。我是巴西人,请原谅我的英语错误 我正在向自己的设备发送推送通知。我可以在我的Ios 如何在另一个不是AppDelegate的类中获取devicetoken?,ios,xcode,ios6,appdelegate,devicetoken,Ios,Xcode,Ios6,Appdelegate,Devicetoken,下午好。我是巴西人,请原谅我的英语错误 我正在向自己的设备发送推送通知。我可以在我的AppDelegate.m中设置我的设备: - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { NSLog(@"Device Token Global : %@", deviceToken); } 但是我有一
AppDelegate.m
中设置我的设备:
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
NSLog(@"Device Token Global : %@", deviceToken);
}
但是我有一个名为
LoginViewController.m
的类,我在其中执行登录并将deviceToken
发布到一个webservice(它将其插入一个mySQL表)。如何在LoginViewController.m类中将此deviceToken
作为字符串获取?将令牌转换为字符串:
NSString *tokenString = [deviceToken description];
tokenString = [tokenString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
tokenString = [tokenString stringByReplacingOccurrencesOfString:@" " withString:@""];
然后,在应用程序的其他位置检索它:
NSString *tokenString = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyAppSpecificGloballyUniqueString"];
您没有可以使用
NSUserDefaults
。您可以使用任何类型的全局状态、单例对象、注册表或依赖项注入来传递值。如何做到这一点取决于你自己;这只是一个示例。使用singleton类并创建设备字符串(deviceString)
singletonObject.deviceString=[deviceToken描述];
singletonObject.deviceString=[tokenString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@”“];
singletonObject.deviceString=[tokenString stringByReplacingOccurrencesOfString:@”“with String:@”“];
现在,您可以在任何其他类中使用singletonObject.deviceString从模型视图控制器的角度来看,应用程序的模型组件目前有哪些功能?感谢上面的代码。只有最后一行对我不起作用。我没有使用
stringforKey
,而是使用了objectforKey
,然后它工作得很好。:)我试图解决这个问题有几天了,直到我找到了你的版本,这是完美的工作!非常感谢。
NSString *tokenString = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyAppSpecificGloballyUniqueString"];
singletonObject.deviceString = [deviceToken description];
singletonObject.deviceString = [tokenString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
singletonObject.deviceString = [tokenString stringByReplacingOccurrencesOfString:@" " withString:@""];