Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在另一个不是AppDelegate的类中获取devicetoken?_Ios_Xcode_Ios6_Appdelegate_Devicetoken - Fatal编程技术网

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:@""];