ios - 从 today-extension 访问 settings.bundle

标签 ios ios8 settings.bundle today-extension

在应用程序中,我可以在设置中选择应使用三种语言中的哪一种。如果未选择任何内容,则会检测 iPhone 语言并选择英语、法语或德语。如果这些语言都不是 iPhone 语言,则设置为使用英语。手动更改设置中的语言可以正常工作。现在我添加了一个 today-extension,它几乎可以正常工作,但我需要访问 settings-bundle 以获取语言的 NSUserDefaults(如果手动更改)。在这两个目标中,我都激活了应用程序组

group.com.companyname.appname

并选择了它。

在应用程序中,我使用

获取语言
NSString *manualLanguageSet = [[NSUserDefaults standardUserDefaults] valueForKey:SPRACHWAHL];

在 today-extension 中,我尝试通过以下方式获取它:

NSString *manualLanguageSet = [[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] valueForKey:SPRACHWAHL];

对于 NSLog(@"Settings-Sprache: %@", manualLanguageSet); 当运行 today-extension 时结果是(是否在设置中选择了哪种语言无关紧要)

2014-09-13 16:48:36.331 HdB today[3734:284836] Settings-Sprache: (null)

我该怎么做才能更正/我怎样才能访问设置 (settings.bundle)?

最佳答案

如果您创建一个 WatchKit 首选项包,它还包含 key

ApplicationGroupContainerIdentifier

在包的 Root.plist 字典的根级别,值为组标识符(您作为 suiteName 提供给 NSUserDefaults 的值)。

我发现您也可以在 iOS 设置包中使用此 key 。如果添加,首选项将转到相应的容器。

我在 iOS 设置应用程序、iPhone 应用程序和 WatchKit 扩展程序中验证了它在 iOS 8.3 上的工作。

更新:Apple 在 iOS 8.2 及更高版本中列出了此 key ,网址为 https://developer.apple.com/library/ios/documentation/PreferenceSettings/Conceptual/SettingsApplicationSchemaReference/Articles/RootContent.html

关于ios - 从 today-extension 访问 settings.bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25824470/

相关文章:

ios - 如何在 iOS 8 的模态视图 Controller 中强制纵向显示?

ios - 如何将事件名称设置为 os_activity_initiate 中的变量?

xcode - 在“今日 View ”小部件中使用相机

c# - 访问 Xamarin.iOS Settings.Bundle?

ios 保存在 plist 中 vs 保存在 nsdata 中

iphone - 使用 FBloginView 的 facebook 登录未在 ios 6 中显示

ios - 如何以编程方式在 iPhone 中强制选择 2G 或 3G?

ios - 从 iOS 应用程序资源加载 .html 到 WebView 中?

iphone - xcconfig 中的环境变量不会在 Settings.bundle/Root.plist 中展开

android - 从哪里导入旧版 Android Studio 的设置?