兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
# 点击打开app的时候,快捷指令的页面能不显示吗? 你提到了一个非常核心且常见的需求,也是 iOS 自动化领域的一个“痛点”:**在通过快捷指令打开 App 时,能否不显示快捷指令本身的页面(即“闪烁”)?** ### 核心答案: **不行,在通过 `shortcuts://run-workflow?name=...` 这种 URL Scheme 方式调用快捷指令时,目前没有公开的 API 或方法可以阻止“快捷指令”App 自身界面的短暂显示。** 这个“闪烁”或短暂跳转到快捷指令 App 的行为,是 iOS 系统**有意为之**的安全和用户体验设计。 ### 为什么不能避免这个“闪烁”? 1. **安全和用户感知:** * iOS 旨在让用户清晰地感知到 App 间的跳转和操作执行。即使是自动化,也需要一定的“痕迹”。 * 这防止了恶意 App 在后台默默地启动其他 App,或者在用户不知情的情况下执行敏感操作。 * 通过显示快捷指令的界面,系统相当于在告诉用户:“你的操作正在通过快捷指令这个工具执行。” 2. **沙盒和权限:** * App 之间是沙盒隔离的,相互之间不能直接进行深度控制。 * URL Scheme 是 App 间通信的一种受限方式。当一个 App (`JSBox`) 通过 Scheme (`shortcuts://`) 唤醒另一个 App (`快捷指令`) 时,系统会进行一个 App 切换的过程。这个过程涉及到进程的调度和界面的切换。 * “快捷指令”App 获得了系统级的特殊权限,可以执行“打开 App”等操作,但它执行这些操作时也必须遵循系统UI切换的规范。 3. **技术实现:** * `shortcuts://` Scheme 实际上是请求系统启动“快捷指令”这个 App,并向其传递一个指令名称。一旦“快捷指令”App 被唤醒并接收到这个指令,它就会在其内部执行相应的动作。这个启动和执行过程发生在“快捷指令”App 的上下文中,因此它的界面自然会短暂地显示出来。 ### 替代方案或优化用户体验的思路: 虽然不能完全消除“闪烁”,但我们可以从其他角度来优化用户体验: 1. **接受并解释“闪烁”:** * 在 UI 提示中明确告知用户会有这个“闪烁”现象,让用户理解这是正常行为。你的代码中已经包含了 `$l10n("SHORTCUT_USAGE_HINT")` 提示,这是非常好的做法。 2. **优化快捷指令本身:** * 确保你的快捷指令只包含最少的动作(例如,只包含“打开 App”),这样跳转过程会尽可能快。避免在快捷指令中添加不必要的延迟或复杂逻辑。 3. **考虑 Universal Links (通用链接) 作为替代(如果 App 支持):** * 如果目标 App (IMA) 注册了 **Universal Links (通用链接)**,并且你的 JSBox 脚本可以直接调用这些 `https://` 开头的通用链接,那么这种方式**不会有快捷指令的“闪烁”**。通用链接会直接从一个 App (或浏览器) 跳转到另一个 App,体验更流畅。 * **缺点:** 缺点是,你需要知道 App 注册了哪些通用链接路径,而且不是所有 App 都支持。我们之前的测试表明 IMA App 没有容易猜测的通用链接。 4. **在 iOS 14+ 尝试“自动运行快捷指令”(部分场景):** * 在 iOS 14 及以上,可以创建“自动化”快捷指令(Automations),例如,当特定条件满足时(如时间、位置、某个 App 启动),自动运行一个指令。这些自动化指令可以在后台运行,可能不会显示界面。但这是基于系统触发的,而不是由 JSBox 主动调用。 * **与 JSBox 整合的局限性:** 这种方式通常不能由 JSBox 直接触发某个特定的自动化指令,而是依赖 iOS 系统自身的自动化规则。 **总结:** 对于你目前的需求,通过 `shortcuts://` Scheme 调用快捷指令来打开 App 时,**短暂的“闪烁”是无法避免的系统行为。** 最好的做法是接受并向用户解释这个行为,同时确保你的快捷指令本身尽可能简洁,以提供最快的跳转体验。
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章