# Section1 捷径的前世今生
如果有人问最好用的手机操作系统是什么,大多人的回答肯定是iOS,即使你不是一个果粉也不得不为iOS系统流畅性和UI的美感所折服。并且得益于苹果公司对App Store上架App质量的严格审查,iOS上大多数的App质量都要高于其他平台。
但是如果你问我iOS最好用的App是哪个?这个问题以前确实很难回答,毕竟一千个人心中有一千个哈姆雷特。直到2015年DeskConnect公司推出了一款叫Workflow的App,在推出当年就被Apple评为年度“App Store最佳应用”,iPhone平台最具创新应用,并收获了各大媒体的一致好评。
![workflow](https://img.kancloud.cn/0b/95/0b9547630c08a039b062149fc8474253_790x414.png)
在这之后如果你问我这个问题,我会毫不犹豫推荐这款,可以说“没用过Workflow就别说你会用iOS”。
在2017年3月,Workflow被苹果公司收购。Workflow的开发团队也加入了苹果公司,从此有了苹果官方支持的Workflow如虎添翼,得到了更多的权限和支持,功能也更加强大。
直到2018年9年,随着iOS12的推出,苹果公司对Workflow进行了深度改造,并将对其提供了系统级接口,并将其改名为:捷径(Shortcuts)。
# Section2 什么是捷径
如果你以前接触过Workflow,可能看了以上的介绍还是一脸迷茫,下面我们说一下捷径到底是什么,在iOS12中捷径可以分为2个部分:
第一部分是Siri捷径,这个功能相当于Siri的自定义指令,我们可以将一些可以通过Siri调用的功能定义为一个Siri指令,在设置里Siri会给出建议直接点“+”既可以添加成一条捷径,比如下图中的查看**查看相簿“所有照片”**。
![Siri捷径](https://img.kancloud.cn/05/a7/05a7c314b1d43b2664ae9024b4157635_1209x1277.png)
但是这个功能只提供了简单的命令,并不能完成复杂的工作,当然它也可以帮助我们用语音来调用我们在第二部分要谈到的捷径脚本。
第二部分就是本书中要重点介绍的捷径脚本,也就是以前Workflow的主要功能。
简单地说它是一个类似于批处理的脚本语言,你可以把他看作iOS上的PowerShell或VBScript,但是它的流程可视化的,所以你会发现它的学习成本远远低于你所知的任何一种程序语言。我们可以借助这种脚本使用一次点击或一条Siri语音指令,完成一系列复杂的操作,如果你日常经常需要做一些重复性的操作,你会发现使用这种脚本能使你一劳永逸,将你从繁杂的工作中解放出来。
# Section3 捷径能做什么
通过捷径脚本我们可以将一系列复杂的流程化,例如,获取前往“日历”上下一个日程的路线、将文本从一个应用移到另一个应用、生成支出报告等类似的操作。这种脚本可以在iOS的-1屏小部件,应用主页,应用扩展,或Siri语音等任何你需要的地方运行。
![iOS-1屏的捷径小部件](https://img.kancloud.cn/ea/c8/eac8d6ba64e8e1d16835c1c5788cb990_1238x469.png)
![应用扩展里的捷径](https://img.kancloud.cn/f2/9e/f29eff35d79138740deb828993cf9b6f_1227x1377.png)
捷径App之所以如此简单高效,得益于其内置了大量的操作(Action)库,大多数时候我们只需要2~3个步骤就可以完成一个小型App所做的工作。经过多年的发展,现在捷径中已经内置了数百个操作,并且很多App也可以为捷径提供操作。
![招商银行App对捷径提供的操作](https://img.kancloud.cn/5c/7f/5c7f352d63c0d1aad5a8c3277caf80ee_1219x365.png)
比如:我们要将几张照片合成为一张动图,你不得不去AppStore下载一个至少几十M的App,而在捷径里我们只需要简单的添加3个操作。
![捷径中的操作](https://img.kancloud.cn/8d/80/8d80748796eec2b8858a21fef54d2694_1213x1057.png)
并且这种编辑好的脚本可以重复使用,是不是非常方便。
# Section4 捷径不能做什么
虽然苹果公司赋予了捷径很多的功能,但是也有自身能力的边界:
1.首先大家都知道iOS之所以拥有较高的安全性很大程度得益于其APP运行中的沙盒机制,捷径虽然拥有较高的权限,但其也会受到沙盒的限制,比如捷径如果想和其他App或网站交换数据必须通过App自身提供的Api或URL Scheme(关于Api和URL Scheme的使用方法在本书的其他章节会有详细介绍),想要通过内存读取是不可能实现的。
2.捷径可以读取设备的部分信息或修改设备的设置,但仅限于捷径提供了操作的部分,比如开关GPS定位之类的在操作库中没有的操作则无法实现。
3.捷径不具备触发运行功能,除非借助其他App(如IFTTT),否则自身无法实现定时启动之类的操作。
4.捷径不是按键精灵,其所有操作必须通过操作库调取App内部功能完成,不能进行模拟点击这样的操作。
5.无法调用需要OAuth验证的API,这类API需要跳转到一个登录页面上手动输入用户名和密码的进行授权,但捷径无法接收返回的数据,所以无法进行调用。