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

ant*_*dof 2 xcode devicetoken ios ios6 appdelegate

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

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

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

但我有一个类LoginViewController.m,我在那里执行登录并将POST deviceToken发送到webservice(将其插入到mySQL表中).如何deviceToken在LoginViewController.m类中将其作为字符串?

war*_*enm 9

将令牌转换为字符串:

NSString *tokenString = [deviceToken description];
tokenString = [tokenString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
tokenString = [tokenString stringByReplacingOccurrencesOfString:@" " withString:@""];
Run Code Online (Sandbox Code Playgroud)

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

[[NSUserDefaults standardUserDefaults] setObject:tokenString forKey:@"MyAppSpecificGloballyUniqueString"];
Run Code Online (Sandbox Code Playgroud)

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

NSString *tokenString = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyAppSpecificGloballyUniqueString"];
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢你上面的代码.只有最后一行对我不起作用.而不是`stringforKey`,我使用`objectforKey`然后它完美地工作.:) (3认同)