如何在macOS上找到/注册URL方案和文件类型处理程序?

问题描述 投票:0回答:1

我正在Objective-C中创建第三方macOS应用程序的插件。我要注册并处理url方案(例如myscheme://somedatahere)和文件类型-例如,当用户双击文件时,我们的插件应收到通知。

由于我的产品只是第三方应用程序的插件,因此代码无权访问该应用程序的NSApplication实例或其事件。因此,我需要创建一个助手应用程序并将其捆绑在插件包/软件包中,以进行注册和处理。如果这些假设有误,请告诉我。

插件捆绑包安装在Library/Application Support内部(用户通常将插件下载到Downloads文件夹中,双击它,然后主机应用程序的处理程序将插件复制到Application Support文件夹中)。处理URL和文件类型的应用程序将放置在插件包中。该位置是由主机应用选择的。

我有几个不确定性,我未能找到答案:

  • macOS如何找到能够处理特定网址方案和文件类型的应用?
  • macOS会自动找到它还是应该给它打电话?
  • 如果自动找到它,即使该应用位于Applications目录之外的插件包中,它也可以工作吗?
objective-c macos
1个回答
1
投票
如果选中“应用程序注册”部分,则会看到:

一个内置的后台工具,在系统启动或新用户登录时运行,自动搜索系统,网络,本地和用户域中的Applications文件夹,并在该域中注册任何新的应用程序。

Finder知道所有应用程序后便会自动注册,例如将它们拖到用户磁盘上或当用户导航到包含它们的文件夹时。

因此,如果您的助手应用程序是由用户手动拖放安装到/ Library / Application Support中的,看起来Launch Services将看到它并注册URL方案。

否则,文档将继续涵盖手动情况:

尽管有这些自动注册实用程序,有时有时仍需要在Launch Services中明确注册应用程序。例如,尽管鼓励开发人员打包其应用程序,以便仅将它们拖到用户磁盘上就可以安装它们,但是某些应用程序可能需要更复杂的自定义安装程序软件。在这种情况下,安装程序应调用启动服务注册功能之一LSRegisterFSRef或LSRegisterURL来显式注册应用程序。

热门问题
推荐问题
最新问题