如何从代码启动应用程序的FinderSync扩展?

时间:2018-05-04 09:39:53

标签: objective-c xcode macos findersync

我使用instruction进行了查找器同步扩展。

当我直接从Xcode启动它时,它会在finder中显示。但是当我运行主应用程序时它不可见。有没有办法为沙盒应用程序做到这一点?在没有沙盒的应用程序中,我使用了代码:

NSTask *fseEnable = [[NSTask alloc] init];
fseEnable.launchPath = @"/usr/bin/pluginkit";
fseEnable.arguments = @[@"-e", @"use", @"-i", @"com.team.AppName.FinderSyncExtension"];

[fseEnable launch];

但它不适用于沙盒。我试过了:

[[NSWorkspace sharedWorkspace] launchAppWithBundleIdentifier:@"com.team.AppName.FinderSyncExtension" options:NSWorkspaceLaunchDefault additionalEventParamDescriptor:nil launchIdentifier:nil];

但它也没有用。

项目设置中可能有一些复选框可以执行此操作。但我并不喜欢它。

此外,我在documentation发现了可能令人遗憾的消息。

  

安装应用扩展程序后,用户必须采取措施才能启用   它。通常,用户可以在其上下文中启用扩展   当前的任务。如果您的扩展程序是“今日”窗口小部件,例如用户   可以编辑通知中心中的今日视图以启用您的   延期。在其他情况下,用户可以使用“设置”(在iOS中)或“系统”   首选项(在macOS中)以启用和管理它们的扩展   安装。

1 个答案:

答案 0 :(得分:-1)

使用int system(const char *)代替NSTask

    system("pluginkit -e use -i com.team.AppName.FinderSyncExtension");