You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建可在Spotlight显示的AppEntity快捷方式及自定义图标

关于AppIntent与AppShortcut的两个问题解决方案

一、创建主屏幕实体快捷方式(类似截图中的"Assigned"快捷方式)

你定义的AppShortcut默认属于Siri快捷方式范畴,要生成主屏幕上的独立实体快捷方式,可通过以下步骤实现:

  1. 确保已完成基础的AppShortcut和AppIntent定义(即你提供的代码部分)。
  2. 在App内添加用户触发入口(比如按钮),调用系统提供的快捷方式添加界面:
    • 使用INAddVoiceShortcutViewController,这个控制器允许用户为快捷方式设置语音指令,同时支持添加到主屏幕的选项。
    • 代码示例:
      import IntentsUI
      
      // 在你的视图控制器中添加按钮点击事件
      @IBAction func addShortcutToHomeScreen(_ sender: UIButton) {
          let intent = WatchListAppIntent()
          let shortcut = INShortcut(intent: intent)
          let vc = INAddVoiceShortcutViewController(shortcut: shortcut)
          vc.delegate = self
          present(vc, animated: true)
      }
      
      // 实现INAddVoiceShortcutViewControllerDelegate协议
      extension YourViewController: INAddVoiceShortcutViewControllerDelegate {
          func addVoiceShortcutViewControllerDidCancel(_ controller: INAddVoiceShortcutViewController) {
              controller.dismiss(animated: true)
          }
      
          func addVoiceShortcutViewController(_ controller: INAddVoiceShortcutViewController, didFinishWith voiceShortcut: INVoiceShortcut?, error: Error?) {
              controller.dismiss(animated: true)
              // 按需处理成功/失败逻辑
          }
      }
      
  3. 用户操作流程:点击按钮后,在弹出的界面中完成语音指令设置,最后选择"添加到主屏幕",即可生成独立的实体快捷方式图标。

二、为AppShortcut设置自定义图标

原代码中使用的systemImageName仅支持系统图标,iOS 17+提供了自定义图标支持,通过AppShortcutIcon.customImage(_:)实现:

  1. 准备自定义图标:建议使用单色矢量图(PDF/SVG),适配不同分辨率后添加到Assets中,需设置为"Template Image",这样系统会自动处理浅色/深色模式的颜色适配。
  2. 修改AppShortcut的初始化代码,替换systemImageName为icon参数:
    struct WatchListShortcut: AppShortcutsProvider {
        static var appShortcuts: [AppShortcut] {
            AppShortcut(
                intent: WatchListAppIntent(),
                phrases: [
                    "Tell \(.applicationName) to open first item in watch list",
                ],
                shortTitle: "WatchList item",
                icon: AppShortcutIcon.customImage(UIImage(named: "your-custom-icon")!)
            )
        }
    }
    
  3. 注意事项:自定义图标会被系统统一处理为符合快捷样式的圆角图标,若使用彩色图,系统可能会将其转为单色,因此优先使用单色模板图以获得最佳效果。

内容的提问来源于stack exchange,提问作者Syed Abdul Basit Shah Mashwani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 14:30:19