在一个项目中,我有一个应用程序和一个作为代理运行的助手。主应用程序用于设置用户首选项,并且可以暂时不使用。通过在启动时启动而启动的帮助程序应用程序使用这些首选项来执行一些日常任务。它读取并更新首选项文件。助手位于“ /Applications/Main.app/Contents/Library/LoginItems
”中。如果未对这些应用程序进行沙盒处理,则可以轻松读写位于中的共享首选项文件/Users/username/Library/Preferences/
。
我试图在辅助应用程序中添加授权密钥com.apple.security.temporary
-exception.shared-preference.read-write,该密钥包含一个包含主应用程序首选项文件路径“ / Library/Containers/com.mycompany.MainApp/Data/Library/Preferences/
”的数组。但这根本行不通。对于助手应用程序,首选项文件不存在。
您需要利用两件事来支持主应用程序和辅助应用程序之间的共享容器和首选项:
为了让多个应用共享一个公共容器,您需要将com.apple.security.application-groups
权利(在主应用和助手应用中)设置为一个公共标识符,例如@"com.company.my-app-suite"
。有关更多信息,请参见将应用添加到组。
对于属于安全应用程序组的应用程序,NSUserDefaults“套件” API(-initWithSuiteName :、 -addSuiteNamed:和-removeSuiteNamed :)将在该组中的应用程序共享的套件上运行,并存储在组容器中。套件标识符是组的标识符。
因此,您需要在应用程序委托(或类似委托)中执行以下操作:
- (NSUserDefaults *)sharedUserDefaults {
static NSUserDefaults *shared = nil;
if (!shared) {
shared = [[NSUserDefaults alloc] initWithSuiteName:@"com.company.my-app-suite"];
}
return shared;
}
并[NSUserDefaults standardUserDefaults]
在整个两个应用程序中使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句