我正在开发FinderSync
扩展程序,我在检查选择是否正在选择,或选择/取消选择扩展程序时遇到一些问题。
有没有办法以编程方式检查FinderSync
中是否选择了System Preferences->Extensions
扩展程序?
当此选择发生变化时,是否有任何API可以获得通知?
除了使用以下内容之外,是否有任何API可以选择/取消选择扩展程序?
system("pluginkit -e use -i com.mycompany.finderExt")
请注意,我已访问过这些页面:
How to enable FinderSync Extension in the System Preference in Cocoa - Objective C
答案 0 :(得分:8)
pluginkit -m -A -i com.mycompany.finderExt
如果启用了分机,则呼叫将返回
" + com.mycompany.finderExt(1)"
如果未启用分机,则呼叫将返回
" - com.mycompany.finderExt(1)"
注意加号和减号,只需解析返回以确定扩展是否已启用。
答案 1 :(得分:1)
macOS 10.14 Mojave为扩展管理添加了两种有用的新方法:
承载Finder同步扩展程序的应用程序可以确定用户是否已启用扩展程序,并可以显示用于管理扩展程序的UI。当应用程序再次激活时,它可以检查用户是否启用了扩展。
@available(OSX 10.14, *)
open class var isExtensionEnabled: Bool { get }
@available(OSX 10.14, *)
open class func showExtensionManagementInterface()
答案 2 :(得分:-1)
FinderSync扩展是一个"应用程序",确切地说。但它的包名为.appex。 在“系统偏好设置”中启用它时,macOS会自动加载它 (您可以通过Activity app或ps -ef命令检查)
因此,您可以通过以下代码轻松检查:
runningApps = [[NSRunningApplication runningApplicationsWithBundleIdentifier:@"your.bundle.id"] retain];
if runningApps.count != 0{
//your extension was enabled
}
else{
//your extension was not enabled
}