Highlight
Apple 用 actions(动作)把应用里的常用任务暴露给 Shortcuts、Siri 和 Suggestions,让用户在应用未打开时完成可重复、可组合、可语音触发的操作。
核心内容
开发者通常先设计应用界面。按钮放在哪里,表单怎么填,列表怎么筛选,这些都发生在应用打开之后。
Shortcuts 处理的是另一个场景:用户没有打开你的应用,但仍然想完成一个任务。比如日历应用可以添加事件、查找今天的事件、修改事件。这些任务如果变成动作,用户就可以把它们拖进快捷指令,和其他应用的动作组合起来。
Apple 在这场 session 里给出的核心判断很直接:动作要有用、模块化、支持多种交互方式、表达清楚,并且容易被发现。
从应用功能到可组合动作
以前,一个应用功能通常只在应用内部可用。用户想把多个应用串起来,就要在不同界面之间切换。日历查下一场会议,再打开信息应用通知参会人自己会迟到,这就是典型例子。
动作把这个流程拆成可组合的积木。日历提供“获取下一场事件”,信息应用提供“发送消息”。用户在 Shortcuts 里把它们连起来,就得到一个新的自动化流程。
从打开应用到就地完成任务
一个好的动作应该尽量在后台完成任务。添加提醒事项时,如果标题已经给出,动作应该直接添加提醒事项,而不是把用户拉回 Reminders 应用。
如果信息不够,动作应该先问一个后续问题。比如“你想被提醒什么?”。只有当目标本身需要完整界面时,才打开应用。
从单个大动作到多个小动作
演讲里的 To Do 应用例子很关键。一个“清理旧任务”动作能做事,但含义模糊,也很难复用。拆成“获取一周前创建的任务”和“归档任务”后,用户可以用同一组动作做更多事。
“获取任务”的输出还可以接给“显示结果”或“保存文件”。如果动作输出了提醒、附件、父任务、截止日期、备注和列表,快捷指令作者就能围绕这些字段继续组合。
详细内容
1. 有用的动作:完成应用内的真实任务
(04:01)Apple 对“有用”的定义很具体:动作执行用户原本会在应用里做的任务,并尽量完整完成,不主动打开应用。
Reminders 的“添加提醒事项”适合作为动作,因为它可以通过参数完成。相反,“自定义 Watch 表盘”包含大量视觉预览和控件,交互很沉浸,不适合变成快捷指令动作。已经配置好的表盘之间切换,更适合作为动作。
action: Add New Reminder
parameters:
title:
required: true
prompt: "What do you want to be reminded about?"
list:
required: false
dueDate:
required: false
runBehavior:
opensApp: false
asksFollowUpQuestionWhenMissingRequiredValue: true
关键点:
action表示要暴露给 Shortcuts 的任务,来自应用里的常用功能。parameters对应 Shortcuts 动作卡片里可配置的字段。title.required: true表示添加提醒事项必须知道标题。prompt是运行时信息不足时向用户提出的问题。opensApp: false对应演讲里的建议:能直接完成就不要打开应用。asksFollowUpQuestionWhenMissingRequiredValue对应“缺少标题时询问用户”的处理方式。
2. 模块化动作:一个动作只做一件事
(08:21)演讲用两个 To Do 应用对比模块化设计。Dog Do’s 做了一个“Clean up old tasks”动作。Shortcats 拆成“Get Tasks”和“Archive”。
拆开之后,动作本身更清楚,组合方式也更多。Siri 在执行归档前还能展示要归档的任务预览,并要求确认。
shortcut: Clean up old tasks
actions:
- action: Get Tasks
parameters:
createdBefore: "one week ago"
output: Cat Tasks
outputProperties:
- Reminder
- Attachment
- Parent task
- Deadline
- Notes
- List
- action: Archive Task
parameters:
tasks: Cat Tasks
关键点:
Get Tasks只负责查找任务,不负责归档。createdBefore是可编辑参数,用户可以把一周改成两周。output: Cat Tasks表示第一个动作的结果可以传给后续动作。outputProperties对应演讲中提到的输出属性,快捷指令作者可以取出备注、附件、截止日期等字段。Archive Task接收Cat Tasks,只负责归档。
3. 多模态动作:同一个参数要适配点击、语音和编辑器
(13:15)Shortcuts 动作会出现在三种场景:用户点击运行、通过 Siri 语音运行、在 Shortcut Editor(快捷指令编辑器)里配置。
同一个截止日期参数,在 iPhone 上可以弹出日历选择器,在 HomePod 上只能由 Siri 提问。Apple 的建议是把 prompt 写成问题,比如“When is the deadline?”。如果只写“Deadline:”,放在 UI 里还行,读出来就不自然。
parameter: deadline
type: Date
prompt: "When is the deadline?"
configurationUI:
input: text
recognizedValuePreview: true
resolutionUI:
compactPicker: calendar
siriResolution:
spokenPrompt: "When is the deadline?"
关键点:
parameter表示动作里的一个输入字段。type: Date使用系统参数类型,系统可以在不同设备上处理日期。prompt写成问题,点击运行和 Siri 语音运行都能复用。configurationUI对应用户在编辑器里设置动作时看到的界面。recognizedValuePreview对应演讲里输入日期文本后出现的识别提示。siriResolution.spokenPrompt表示同一个问题会被 Siri 读出来。
4. Dynamic Enumerations:给自定义参数提供可视化选择
(15:39)系统参数类型不一定覆盖应用里的所有实体。Set Playback Destination 动作要展示 AirPods 或蓝牙音箱,系统没有一个通用“播放设备”参数,所以动作定义了自定义参数和配套 UI。
Apple 把这类 UI 称为 Dynamic Enumerations(动态枚举)。它有两个出现时机:配置动作时选择值,运行动作时解析值。
parameter: catTask
type: CustomEntity
configuration:
dynamicEnumeration: TaskListForEditor
purpose: "pick a task while building the shortcut"
resolution:
dynamicEnumeration: TaskListForRuntime
purpose: "pick a task when the shortcut runs"
关键点:
catTask是应用自己的实体,系统内置类型无法准确表达。type: CustomEntity表示这是自定义参数类型。configuration.dynamicEnumeration对应编辑快捷指令时显示的任务列表。resolution.dynamicEnumeration对应 Siri 追问“归档哪一个任务”时显示的列表。- 两个列表填充的是同一个参数,所以数据来源应该保持一致。
5. 参数摘要:让动作在编辑器里读起来像一句话
(18:44)iOS 15 重新设计了 Shortcuts 编辑器里的动作外观,重点突出 parameter summary(参数摘要)。应用名被移除,应用图标被放进行内,动作本身要靠摘要说清楚任务。
Apple 给出的规则很细:摘要从动词开始,写成一句话,不加句号;只放最重要的参数;可选参数放进 Options UI(选项界面)。动作标题要和摘要使用相同的动词,并尽量共享词语。
actionTitle: "Start Breathing"
parameterSummary: "Start breathing for ${duration}"
requiredParameters:
duration:
defaultValue: "15 minutes"
optionalParameters:
music:
location: Options UI
prompts:
duration: "How long do you want to breathe?"
关键点:
actionTitle用在动作列表里,帮助用户快速找到动作。parameterSummary用在动作卡片里,必须从动词开始。${duration}是摘要里的核心参数,用户一眼能看到呼吸时长。defaultValue对应演讲里的 15 分钟默认值,可以减少运行时提问。music.location: Options UI表示播放音乐是可选项,不应该占据摘要。prompts.duration保证用户使用 Ask Each Time(每次询问)时仍有问题可问。
6. Snippets:在高风险动作前展示结果预览
(16:33)Snippet(片段界面)是在动作运行时展示的小界面。Starbucks 的点咖啡动作会在下单前显示订单预览。
Apple 建议,对删除、下单这类永久性动作,完成前和完成后显示不同 snippet。完成前的界面帮助用户理解将要发生什么。
action: Order Coffee
snippets:
beforeCompletion:
title: "Review Order"
shows:
- drink
- size
- pickupStore
afterCompletion:
title: "Order Placed"
shows:
- orderStatus
- pickupTime
requiresConfirmation: true
关键点:
beforeCompletion对应动作完成前的预览界面。drink、size、pickupStore让用户确认动作的后果。afterCompletion对应动作完成后的状态反馈。requiresConfirmation对应归档、删除、下单这类需要用户确认的流程。
7. 分享与 Add to Siri:给用户一个可直接说出的短语
(20:37)iOS 15 和 macOS Monterey 改进了 Shortcuts 分享方式。开发者可以把包含自己动作的多步骤快捷指令放到网站、社交媒体或应用帮助页面。
“Add to Siri” 也变了。如果开发者提供 suggested invocation phrase(建议唤起短语),用户点击后快捷指令会立即添加,并看到该说什么来运行它。如果没有建议短语,系统会要求用户自己命名,添加流程会变长。
sharedShortcut:
title: "Order My Usual Coffee"
runDestinations:
- iPhone
- Mac
- HomePod
suggestedInvocationPhrase: "Order my usual coffee"
distribution:
- website
- socialMedia
- inAppHelp
关键点:
title是共享快捷指令的名称。runDestinations对应下载 UI 里显示的可运行位置。suggestedInvocationPhrase是用户对 Siri 说出的短语。distribution对应演讲中建议的三个发布入口:网站、社交媒体、应用帮助。
核心启发
1. 给任务管理 App 做“今日清理”快捷指令
- 做什么:提供“获取过期任务”和“归档任务”两个动作,让用户一键清理一周前的任务。
- 为什么值得做:演讲强调模块化动作可以组合,也可以单独使用。获取任务的输出还能接到显示结果或保存文件。
- 怎么开始:先定义 Get 动作,输出任务列表和 Notes、Deadline、Attachment 等属性;再定义 Archive 动作,接收任务列表并在执行前展示确认 snippet。
2. 给习惯追踪 App 做“记录一次”动作
- 做什么:用户说“记录喝水”或点击小组件,就能完成一次习惯打卡。
- 为什么值得做:打卡是高频、可重复、低沉浸任务,符合演讲里的有用动作标准。
- 怎么开始:把习惯名称做成参数;缺少习惯名时用问题式 prompt 追问;运行后返回本次记录结果。
3. 给播客 App 做“播放最新一集”动作
- 做什么:提供“获取节目”“播放单集”“保存到稍后收听”三个动作。
- 为什么值得做:拆成小动作后,用户可以把播客动作和日历、通勤、专注模式组合。
- 怎么开始:让“获取节目”输出节目名、最新单集、时长和备注;播放目标使用动态枚举展示节目列表。
4. 给订餐 App 做“复购常点餐品”动作
- 做什么:用户通过 Siri 下单常点咖啡或午餐,执行前看到订单预览。
- 为什么值得做:演讲提到下单属于永久性动作,适合在完成前展示 snippet 说明后果。
- 怎么开始:把餐品、规格、门店做成参数;给缺失参数写问题式 prompt;下单前展示 beforeCompletion snippet 并要求确认。
5. 给文件管理 App 做“保存附件到 iCloud”动作
- 做什么:从应用实体中提取附件,并交给系统“Save File”动作保存。
- 为什么值得做:演讲强调输出属性要拆开并标注,快捷指令作者可以用内置动作创造应用外的新流程。
- 怎么开始:在 Get 动作里输出 Attachment 属性;确保变量编辑器能看到该属性;用共享快捷指令演示如何连接 Save File。
关联 Session
- Donate intents and expand your app’s presence — 讲解如何捐赠 intents,让系统在 Siri、Focus、Shortcuts 和 Smart Stack 中推荐应用功能。
- Meet Shortcuts for macOS — 介绍 macOS 上的 Shortcuts,以及 Catalyst 和 AppKit 应用如何暴露动作。
- Add intelligence to your widgets — 讲解 Widget Suggestions 和 Smart Rotate,和 Suggestions 场景直接相关。
- Send communication and Time Sensitive notifications — 展示 SiriKit intents 在通信和通知场景中的使用方式。
评论
GitHub Issues · utterances