6

我正在开发一个FinderSync扩展,我在检查选择是否正在选择或选择/取消选择扩展时遇到了一些问题。

有没有办法以编程方式检查是否FinderSync选择了扩展System Preferences->Extensions

当此选择更改时,是否有任何 API 可以得到通知?

除了使用以下内容之外,是否有任何 API 可以选择/取消选择扩展程序?

system("pluginkit -e use -i com.mycompany.finderExt")

请注意,我已经访问过这些页面:

如何在 Cocoa 的系统偏好设置中启用 FinderSync 扩展 - Objective C

OSX Finder 同步扩展

4

3 回答 3

9
pluginkit -m -A -i com.mycompany.finderExt

如果启用了分机,呼叫将返回

“+ com.mycompany.finderExt(1)”

如果未启用分机,呼叫将返回

“- com.mycompany.finderExt(1)”

注意加号和减号,只需解析返回以确定扩展是否启用。

于 2015-10-13T17:18:10.177 回答
3

macOS 10.14 Mojave 为扩展管理添加了两个有用的新方法:

托管 Finder 同步扩展的应用程序可以确定用户是否启用了扩展,并可以显示用于管理扩展的 UI。当应用程序再次激活时,它可以检查用户是否启用了扩展程序。

@available(OSX 10.14, *)
open class var isExtensionEnabled: Bool { get }

@available(OSX 10.14, *)
open class func showExtensionManagementInterface()
于 2018-08-14T01:23:03.617 回答
-2

确切地说,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
}
于 2017-09-11T03:34:08.793 回答