macOS:快捷方式的 Intents 扩展打开主应用程序并且不会 运行 自身
macOS: Intents Extension for Shortcuts opens main app and does not run for itself
我正在尝试为 macOS 12 Monterey 创建 Intents 扩展。
我做了什么:
- 我已经创建了一个意向定义文件并配置了一个自定义意向
- 我已经创建了一个处理程序 class 来确认我的处理协议,该协议是由 Xcode 使用 Intent Definition
创建的
- 我添加了一个 Intents 扩展作为新目标,它在
func handler(for intent: INIntent) -> Any
中创建了我的处理程序 class
问题:
我的快捷方式操作确实出现在快捷方式中。但是,每当我 运行 快捷方式操作时,都会启动主应用程序而不是扩展程序本身。
我已经能够弄清楚我做错了什么,看看下面我的回答。
我发现了两个可能的原因:
- 不要不要将您的 Intent 添加到主应用程序 (
info.plist
) 的受支持 Intent 中,因为只有当您希望主应用程序处理意图来自 func application(_ application: NSApplication, handlerFor intent: INIntent) -> Any?
。在应用委托中(a.k.a。应用内处理)——你希望你的扩展处理意图
- 默认情况下,Intent Extensions 不在沙盒中。因此,您必须在构建设置中启用
App Sandbox
并添加一个将 com.apple.security.app-sandbox
设置为 true
的授权文件。默认情况下,Apple 真的应该为任何新的 Intent Extension 执行此操作。
干杯!
我正在尝试为 macOS 12 Monterey 创建 Intents 扩展。
我做了什么:
- 我已经创建了一个意向定义文件并配置了一个自定义意向
- 我已经创建了一个处理程序 class 来确认我的处理协议,该协议是由 Xcode 使用 Intent Definition 创建的
- 我添加了一个 Intents 扩展作为新目标,它在
func handler(for intent: INIntent) -> Any
中创建了我的处理程序 class
问题:
我的快捷方式操作确实出现在快捷方式中。但是,每当我 运行 快捷方式操作时,都会启动主应用程序而不是扩展程序本身。
我已经能够弄清楚我做错了什么,看看下面我的回答。
我发现了两个可能的原因:
- 不要不要将您的 Intent 添加到主应用程序 (
info.plist
) 的受支持 Intent 中,因为只有当您希望主应用程序处理意图来自func application(_ application: NSApplication, handlerFor intent: INIntent) -> Any?
。在应用委托中(a.k.a。应用内处理)——你希望你的扩展处理意图 - 默认情况下,Intent Extensions 不在沙盒中。因此,您必须在构建设置中启用
App Sandbox
并添加一个将com.apple.security.app-sandbox
设置为true
的授权文件。默认情况下,Apple 真的应该为任何新的 Intent Extension 执行此操作。
干杯!