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

如何在AppShortcutsProvider中条件化动态添加AppShortcut?

动态条件化添加App Shortcuts的实现方案

一、条件化返回App Shortcuts列表

AppShortcutsProvider的appShortcuts是静态计算属性,可以直接在属性内部根据运行时条件拼接快捷方式数组。只需将固定快捷方式作为基础,再根据业务逻辑(比如用户状态、功能开关等)追加对应快捷方式即可。

修改你的DefaultAppShortcutProvider示例如下:

struct DefaultAppShortcutProvider: AppShortcutsProvider {
    
    static var appShortcuts: [AppShortcut] {
        var shortcuts = [AppShortcut]()
        
        // 添加默认的转账快捷方式
        shortcuts.append(AppShortcut(
            intent: GoToBankTransferIntent(),
            phrases: [
                "Open \(.applicationName) to do a bank transfer",
            ],
            shortTitle: "Ordinary Bank Transfer",
            systemImageName: "eurosign.circle"
        ))
        
        // 条件化添加:仅当用户已绑定信用卡时,追加信用卡还款快捷方式
        if UserDefaults.standard.bool(forKey: "hasBoundCreditCard") {
            shortcuts.append(AppShortcut(
                intent: GoToCreditCardPaymentIntent(),
                phrases: [
                    "Open \(.applicationName) to pay credit card bill",
                ],
                shortTitle: "Credit Card Payment",
                systemImageName: "creditcard.circle"
            ))
        }
        
        return shortcuts
    }

    static let shortcutTileColor: ShortcutTileColor = .lightBlue
}

二、运行时动态更新快捷方式

如果需要在用户完成某操作(比如首次绑定信用卡、完成还款)后新增快捷方式,只需两步:

  1. 持久化更新触发条件的状态(比如用UserDefaults存储用户绑定状态);
  2. 调用AppShortcut.update()通知系统重新读取appShortcuts列表,刷新系统级快捷方式。

示例代码(操作完成后的逻辑):

// 用户完成信用卡绑定后,更新持久化状态
UserDefaults.standard.set(true, forKey: "hasBoundCreditCard")
// 通知系统刷新App Shortcuts
AppShortcut.update()

注意事项

  • 条件判断依赖的状态必须持久化存储(如UserDefaults、Core Data),避免App重启后状态丢失导致快捷方式消失;
  • 自定义Intent(如GoToCreditCardPaymentIntent)需要提前在Intent Definition文件中创建并配置;
  • AppShortcut.update()会触发系统重新加载快捷方式列表,无需重启App即可生效。

内容的提问来源于stack exchange,提问作者Fabio Mussi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:07:08