【问题标题】:How to launch app's FinderSync Extension from code?如何从代码启动应用程序的 FinderSync 扩展?
【发布时间】:2018-10-14 18:14:08
【问题描述】:

我使用 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 中发现了可能令人悲伤的消息。

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

【问题讨论】:

    标签: objective-c xcode macos findersync


    【解决方案1】:

    使用int system(const char *) 而不是NSTask。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多