如何在另一个不是 AppDelegate 的类中获取 devicetoken?

Posted

技术标签:

【中文标题】如何在另一个不是 AppDelegate 的类中获取 devicetoken?【英文标题】:How to get the devicetoken in another class that is not the AppDelegate? 【发布时间】:2012-12-18 22:21:59 【问题描述】:

下午好。我是巴西人,如有任何英语错误,请见谅!

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

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken   
    NSLog(@"Device Token Global : %@", deviceToken);   

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

【问题讨论】:

在模型-视图-控制器方面,您目前对应用程序的模型组件有什么影响? 【参考方案1】:

将令牌转换为字符串:

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

【讨论】:

感谢以上代码。只有最后一行对我不起作用。我没有使用stringforKey,而是使用了objectforKey,然后它运行良好。 :) 我试图解决这个问题几天,直到我找到你的版本,它工作得很好!谢谢!【参考方案2】:

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

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

现在您可以在任何其他类中使用 singletonObject.deviceString

【讨论】:

以上是关于如何在另一个不是 AppDelegate 的类中获取 devicetoken?的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个类中使用带有构造函数的类?

如何导入和使用在另一个python程序的类中定义的变量?

在 boost.python 中;如何公开包含在另一个类中的类(通过组合)?

在 boost.python 中;如何公开包含在另一个类中的类(通过组合)?

使用 makeStyles 在另一个选定的类中嵌套类

C# Specflow:如何在另一个文件夹的类中调用具有动态表作为参数的方法