在应用程序中,我可以在设置中选择应使用三种语言中的哪一种。如果未选择任何内容,则会检测 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/