macOS:快捷方式的意图扩展打开主应用程序并且不会自行运行

Posted

技术标签:

【中文标题】macOS:快捷方式的意图扩展打开主应用程序并且不会自行运行【英文标题】:macOS: Intents Extension for Shortcuts opens main app and does not run for itself 【发布时间】:2021-10-06 19:57:02 【问题描述】:

我正在尝试为 macOS 12 Monterey 创建一个 Intents 扩展。

我做了什么:

我创建了一个意图定义文件并配置了一个自定义意图 我创建了一个 Handler 类,该类确认 Xcode 使用 Intent 定义创建的处理协议 我添加了一个 Intents Extension 作为新目标,它在func handler(for intent: INIntent) -> Any 中创建我的 Handler 类

问题:

我的快捷方式操作确实出现在快捷方式中。但是,每当我使用我的操作运行快捷方式时,都会启动主应用程序而不是扩展程序本身。

我已经能够弄清楚我做错了什么,请看下面的答案。 ????

【问题讨论】:

【参考方案1】:

我发现了两个可能的原因:

    不要不要将您的 Intent 添加到您的主应用程序 (info.plist) 的受支持的 Intent 中,因为只有在您希望您的主应用程序通过 func application(_ application: NSApplication, handlerFor intent: INIntent) -> Any? 处理 Intent 时才需要这样做。在应用委托中(也就是应用内​​处理)——你希望你的扩展来处理意图 默认情况下,Intent Extensions 不被沙盒化。因此,您必须在构建设置中启用App Sandbox 并添加一个将com.apple.security.app-sandbox 设置为true 的权利文件。默认情况下,Apple 确实应该为任何新的 Intent Extension 执行此操作。

干杯!

【讨论】:

当我创建一个 Intents 扩展时,我不断收到以下错误:“Provisioning profile “Mac Team Provisioning Profile: com.myapp.blah”不包括 aps-environment 和 com.apple。 developer.siri 权利”。我也尝试过添加权利,但没有帮助。我启用了“自动管理签名”。 经过几个小时,我终于弄明白了。当我创建 Intents 扩展时,出于一些奇怪的原因,Xcode 决定从 ios 应用程序目标的权利文件中而不是从 Mac 应用程序目标中解除权利。我不得不在构建设置中将它们切换回,然后自动配置再次起作用。 正是这个!我花了几个小时试图弄清楚为什么即使它列在快捷方式中它也不起作用。我有错误“您的意图是否列在扩展 Info.plist 的 IntentsSupported 中?” - 希望更多人能找到您的答案 - 谢谢!

以上是关于macOS:快捷方式的意图扩展打开主应用程序并且不会自行运行的主要内容,如果未能解决你的问题,请参考以下文章

MacOS应用程序有时卡死,怎么办?2种方法轻松搞定

[Winfrom] 使用一个启动快捷方式,打开2个不同的窗体并且共用一个缓存空间

未调用 SiriKit 意图处理程序

如何在不捐赠意图或使用快捷方式的情况下利用 Siri 创建自定义对象?

如何以编程方式在系统偏好设置中设置 macOS 键盘快捷键?

lnk文件怎么打开