objective-c - 如何在 macOS 系统偏好设置中启用 FinderSync 扩展

标签 objective-c cocoa osx-yosemite findersync

我正在将 FinderSync Extension 集成到我的 Cocoa 应用程序中以在文件和文件夹中显示徽章。看看下面的两个场景:

  1. 当我使用 FinderSync Extension(如 DemoFinderSync)运行应用程序时,请查看下图中的蓝色弹出窗口,在这种情况下,Extension 已添加到系统偏好设置中并带有复选标记,并且还将该主体类称为“FinderSync.m”。

Screen shot 1

  1. 当我使用我的应用程序方案(如 DemoApp)运行应用程序时,请查看下图中的蓝色弹出窗口,在这种情况下,系统偏好设置中添加了扩展,但没有复选标记,主要类“FinderSync.m”没有调用和 FinderSync 扩展在这种情况下不起作用。

Screen Shot 2

有没有人知道如何使用第二种情况在系统偏好设置中启用 Finder 扩展?

最佳答案

非调试方案(#if !DEBUG):

system("pluginkit -e use -i com.domain.my-finder-extension");

在调试器下运行时,直接为您的扩展提供路径:

NSString *pluginPath = [[[NSBundle mainBundle] builtInPlugInsPath] stringByAppendingPathComponent:@"My Finder Extension.appex"];
NSString *pluginkitString = [NSString stringWithFormat:@"pluginkit -e use -a \"%@\"", pluginPath];
system([pluginkitString cStringUsingEncoding:NSUTF8StringEncoding]);

在您的 applicationDidFinishLaunching 方法中指定它。您还应该仅手动将其打开一次,这样如果用户在系统偏好设置中关闭了您的扩展程序,您就不会在每次应用程序启动时都打开它。我在用户第一次启动我的应用程序时设置了一个 NSUserDefaults 键,该应用程序支持查找器同步扩展。

关于objective-c - 如何在 macOS 系统偏好设置中启用 FinderSync 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31176942/

相关文章:

cocoa - 自定义 NSTextView 自动完成菜单

cocoa - NSMenuItem 的标签属性的目的是什么?

macos - 找不到错误的网域类别

ios - 带有 Autolayout iOS 的 scrollView 中的 UITextView 不工作

macos - 有没有办法根据型号获取 Mac 的图标?

objective-c - 表格重新加载后设置 UITableView FooterView

php - Yosemite/El Capitan php-gd + mcrypt 安装

xcode - 如何在 Swift 中的 Yosemite 之后获取当前的 wifi 网络名称?

iphone - 删除其他框架后得到无法识别的选择器

iphone - xCode中的调用方法