说明:#原创# 标签为IT之家在IT圈所设的投稿栏目,具体投稿规则点此查看

— 速览 — 


• 本帖受 @数字公民 的《三分钟,带你入门 iOS 捷径》启发,旨在用简明的语言,系统性讲解 iOS "快捷指令"的使用方法;

• 我会用四个例子介绍"快捷指令"中的基本概念,如"内容流""操作控制"等;考虑到单个帖子的篇幅,我把内容分成了"上、中、下"三个部分,每个部分只要 5 分钟的阅读时间;

• 阅读本系列后,您会掌握:

    1. 上:看懂复杂的指令是如何运行的(本帖)

    2. 中:尝试构建符合自己需求的指令(点此跳转

   3. 下:理解简易的编程概念,如 JavaScript,API,JSON 等(点此跳转

废话不多说,进入正文。


— 启动"快捷指令"的方法 —


不会运行快捷指令,一切都白搭。目前有四种开启指令的方法。

1.通过"快捷指令" APP:

▼ 打开"快捷指令" APP,在"我的快捷指令"中轻点一个指令。

▼ 如果你在负一屏里添加了"快捷指令"的小组件,你可以轻点按钮来启动对应的指令;

▼ 当然,你还能将捷径添加到主屏幕

2.通过 Siri:

▼ 在 iOS 设备上唤出 Siri,说出某个指令的名称,该指令就会被运行;

3.通过"建议与搜索":

▼ 从主屏幕下拉,唤出"搜索"界面,iOS 会根据用户日常操作推荐一些指令。你也可以在搜索框里直接输入某个指令。

4.通过其他 App 中的"分享"按钮

▼ 你可以在"快捷指令"中设置,是否在"分享列表"中显示某个指令。分享的内容会作为该指令的输入(详见后文);

— 实例一:新手难度 —


我们先来看看最简单的快捷指令

• "IT 之家签到"下载链接

这类指令是 App 自带的,相当于把 IT 之家的"签到"按钮放到 App 外面。我们用户没有 DIY 的余地,"点击 — 运行"即可。

这个实例展示了"快捷指令"的本质:自动化。"打开之家、打开我的主页、点击签到"这三步,在轻点指令后会自动运行。这也许节省不了多少时间,但如果设定为"在每天早上运行该指令",成为 50 级大佬不是梦🌹🐔

— 实例二:入门难度 —


我们再看一个有点复杂的快捷指令

 • "洗衣计时器"下载链接

1.用户手动输入洗涤时间;

2.当前时刻 + 洗涤时间 = 结束时刻

3.新建一个"提醒事项",内容为"衣服已洗好!",提醒时间为"结束时刻"

5.在"结束时刻",用户会收到提醒

这个实例与"之家签到"的最大区别,在于操作的数量。乍看之下,我输入一个数字,得到一个提醒事项,好像很神奇的样子,实则不然。这个实例之所以能成立,说到底是"提醒事项"这个 App 适配了"快捷指令",你因此能用"快捷指令"联动"提醒事项"来"创建新提醒"

▼ "提醒事项"中的"新建"界面

▼ "快捷指令"中的"新建"界面

从上面的对比可以看出,"快捷指令"无非就是简化版的"提醒事项",虽然一些选项,如"优先级""标签",被无情阉割,但所有参数都被整合在"一句话"里。通过修改"这句话"中的元素,如"具体内容""特定时间",我们其实就是在调整"提醒事项"中的具体参数

我们把"这句话"称为一个"操作"。所有"操作"都是开发者适配后的产物,如果"操作"不存在,那相关功能也不可能实现

"快捷指令"的"操作"可以分为四类:

1.可以输入,并产生结果的

▼ 如"添加新提醒事项",你可以输入各种参数,运行指令后创建一个新提醒作为结果;

2.只接受输入,没有结果的

▼ 如"删除照片",你告诉 iPhone "要删除哪张照片",然后 iPhone 就帮你删了。没有产出任何新的东西;

3.只产生结果,没有输入的

▼ 如"获取当前天气",iPhone 会自动查询当地的天气,然后以文本的形式返回结果。你无法输入任何参数;

(PS:大部分冠以"获取"的操作都属于"只出不进")

4.既没有输入也没有结果的

▼ 如"使设备振动",字面意思,执行这个操作时,设备会震一下;

我猜有的读者可能会:"删除照片"怎么就没结果了,"删除"这事本身不算结果吗?"设备振动"怎么不需要输入,用户的"点击"难道不算输入?这里要强调下:

• 所谓"输入",是指能在"操作"中修改的参数

• 所谓"结果",是指能在其他"操作"中充当"输入"的内容;

▼ "设备振动"既没有可编辑的参数,也无法与别的操作产生联系,所以它属于…

▼ "获取当前位置"可以为后续操作提供输入,但它本身没有可编辑的参数,所以它属于…

了解完"操作" "输入" "结果"这三个最基本的概念后,我们回到"洗衣计时器"。敏锐的读者可能会意识到:这条指令不就是在特定时间点创建了一条新提醒吗?我用"提醒事项" App 手动创建不也一样。恭喜!🎉能看透这点,你已经可驾驭90%的"快捷指令"了。

▼ "洗衣计时器"总共 4 步,前 3 步都是在告诉 iPhone如何计算衣服洗完的时刻

▼ 前面的步骤都是为了向第 4 步提供一个正确的输入(提醒时间),而"提醒内容"则是我输入的固定文本

不知各位有没有注意到一个细节:

• 第 3 步向第 4 步传递了"结束时刻",因此这两步间有一个连接符

这个标示代表"上一操作的结果会用做下一操作的输入",且指令的运行顺序是从上至下;但是:

• 第 1 步中输入的"洗涤时间"在第 3 步的计算中也有用到,但它们并不相邻,我如何让"Step 1 的结果变成 Step 3 的输入"?

▼ 点击想要编辑的参数,底部会跳出一个菜单,名叫"变量"

此处,你可以指定该参数来自何处。有四个默认提供的选项:

• 剪贴板:把你拷贝的内容作为输入;

• 捷径指令输入:把"共享"的内容作为输入;

• 每次均询问:运行时手动输入内容;

• 当前日期:字面意思。

根据指令中已有的操作,"变量"菜单里还会出现各种可被选择的项目。如果你觉得文字描述太抽象,不妨点击下第一个按钮,"魔棒":

▼此视图称为"魔法变量",所有可供选择的"结果"都会高亮显示,你只需点击想要使用的"结果"即可。

此处,我点击第一个结果,即"提供的输入",这就相当于在"加上  ?分钟"中填充我输入的"洗涤时间"。当前时刻 + 洗涤时间,我就得到了"结束时刻"。注意!请务必掌握"魔法变量"的用法,这是"快捷指令"最核心的功能之一!


— 上篇总结 —


本帖中,我使用了两个实例,介绍了 iOS "快捷指令"的基础功能。总结下就是:

• 巧妇难为无米之炊,那些看起来高端大气上档次的指令,其实都借助了手机 App 中已有的功能;高级一点的指令会调用网络中的 API,实现本地 App 所没有的功能,这在下篇会具体介绍

• 任何指令都离不开三要素:操作、输入、结果。遇到复杂的指令,或是自己想创建一个指令,只要不断回答三个问题就行:

1.这一步在干什么?

2.这一步是否需要输入?输入来自何处?

3.这一步是否产生结果?结果是什么?


上篇的内容到此结束,希望各位有一个良好的阅读体验。中篇中,我会带领大家对"洗衣计时器"进行一些改良,以让各位拥有 DIY "快捷指令" 的能力(点击跳转。如果文中出现错误,还请大佬们批评指正,在此谢过了~🙏