mac app开发之使用CFPreferencesSetValue为其他app设置首选项

537 阅读1分钟

前言

大多是mac app都有设置功能,一般都是给本app设置一些选项,如果想给其他app设置一些首选项应该怎么办呢?那就使用: CFPreferencesSetValue 和 CFPreferencesCopyAppValue

示例

设置

var key : CFString = "key" as! CFString
var value: CFString = "world!" as! CFString
var applicationID : CFString = "com.example3" as! CFString

// 为applicationID这个应用设置,读取时要填写正确
CFPreferencesSetValue(key, value, applicationID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost)

// 需要手动调用才可以持久化到磁盘
var rst = CFPreferencesSynchronize(applicationID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost)
print("插入结果:\(rst)")

读取

var key : CFString = "key" as! CFString
var applicationID : CFString = "com.example3" as! CFString
var value = CFPreferencesCopyAppValue(key, applicationID)
CFShow(value)
print("====>value:\(value)")

注意!!!

一定要关闭App Sandbox 沙箱环境!否则无法实现为其他app设置首选项! (被卡了两天多才发现这个问题)

参考资料

developer.apple.com/library/arc…

developer.apple.com/library/arc…

developer.apple.com/library/arc…

developer.apple.com/library/arc…