【问题标题】:Launch macOS app from FinderSync extension从 FinderSync 扩展启动 macOS 应用程序
【发布时间】:2019-08-12 16:30:32
【问题描述】:

我编写了一个实现 FinderSync 扩展的应用。

一切正常,我可以通过DistributedNotificationCenter 从扩展程序向主应用程序发送通知来“交流”。但显然,如果只运行主应用程序,它就可以工作。

是否有任何机制可以打开已终止的应用并传递参数?

更新:

这个想法是实现简单的图像处理应用程序。我想从 Finder-Sync 扩展运行主应用程序(包含执行代码和 GUI)。

更具体地说,我实现了FIFinderSyncProtocolfunc menu(for menu: FIMenuKind) -> NSMenu?,当用户右键单击菜单项并选择我添加到菜单中的操作时,我想运行/打开主应用程序。

【问题讨论】:

  • 您可能需要考虑实现后台应用刷新。 developer.apple.com/documentation/uikit/app_and_environment/…
  • @otolock 我更新了问题以更好地描述我的想法
  • 您尝试使用 URL 启动?我知道它适用于共享扩展,尚未检查 Finder 扩展。
  • @IvanIčin 您是否有使用 URL 传递多个选定文件的经验?有什么限制吗?
  • @MartinPilch 我的想法只是启动应用程序,然后像你已经做的那样进行通信,或者进行一些更改,例如通知应用程序已启动并随后发送消息。我不确定 URL 长度是否有限制,可能有。

标签: swift macos finder findersync


【解决方案1】:

我猜我的评论至少在某种程度上是有效的,所以我会把它放在答案中。

扩展允许使用应用处理的 URL 启动主应用。

与 URL 的通信可能还不够,但您可以拥有应用程序组,其中扩展程序可以将数据写入磁盘并可由主应用程序读取,或者使用您当前的通信方式并对此方法进行一些调整。

【讨论】:

  • 谢谢!我成功了。现在我需要弄清楚如何将选定项目从 Finder Sync 扩展传递到我的主应用程序的最佳方法,但这是另一个问题(目前正在使用 DistributeNotificationCenter 进行实验)
【解决方案2】:

您可以使用SMLoginItemSetEnabled 启动后台“助手”应用程序。

https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled

此帮助应用程序可以由沙盒应用程序在后台启动,几乎没有限制,并在主应用程序关闭时保持打开状态。即使主应用程序关闭,您的 FinderSync 扩展程序也可以继续与帮助程序应用程序通信。

【讨论】:

    猜你喜欢
    • 2018-10-14
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多