如何在快捷指令App中隐藏LiveActivityIntent按钮
如何在快捷指令App中隐藏LiveActivityIntent按钮
问题描述
我是这样使用LiveActivityIntent给Live Activity添加交互按钮的:
struct Test: LiveActivityIntent { static var title: LocalizedStringResource = "Test" public init() { } func perform() async throws -> some IntentResult { return .result() } }
这段代码能正常工作,但问题是这个LiveActivityIntent也会出现在快捷指令App里,这显然不合理——这些按钮本来就不应该让用户自行配置。请问要怎么把这些按钮对应的Intent从快捷指令App里隐藏掉?
解决方案
嗨,我完全懂你的困扰!专门给Live Activity做的交互按钮,对应的Intent跑到快捷指令里确实很违和,毕竟这些按钮就是为Live Activity专属设计的,不该让用户随便配置。别担心,只需要给你的Intent结构体加一段简单配置就能搞定。
你只需要在Test结构体中添加一个静态的intentConfiguration属性,把它的可见性设置为.hidden,系统就会自动把这个Intent从快捷指令App里隐藏起来,同时完全不影响它在Live Activity里的正常功能。修改后的代码如下:
struct Test: LiveActivityIntent { static var title: LocalizedStringResource = "Test" // 添加这段配置,隐藏Intent在快捷指令中的展示 static var intentConfiguration: IntentConfiguration { IntentConfiguration(visibility: .hidden) } public init() { } func perform() async throws -> some IntentResult { return .result() } }
原理说明
IntentConfiguration是用来控制Intent在系统中的暴露范围的,当你设置visibility: .hidden时,系统会识别出这个Intent是应用内部专属使用的,不会将其暴露给快捷指令这类系统级自动化工具。这样修改后,你的Live Activity交互按钮依然能正常响应,而快捷指令App里就不会再出现这个Intent了。
备注:内容来源于stack exchange,提问作者leonboe1
相关产品推荐
相关产品推荐

