快捷指令的第三方工具支持现状

网站所有资源都有,可联系VX:kanyingvip

快捷指令 app 是一个工具,也是一个平台,上面有既有苹果自家的功能模块,也有第三方应用为它贡献的功能模块。这些模块在快捷指令中被称为「操作」,是组成快捷指令的基本零件。

其实从 Workflow 时期(被苹果收购前)开始,快捷指令就已经内置了一批第三方操作。iOS 12 推出后,第三方应用可以向快捷指令 app 提交操作,又让快捷指令 app 里的第三方操作数量翻了几番。到了 iOS 13,这批操作获得了传递数据的能力,再次提升了它们的能力。

但是,不同时期遗留下来的第三方操作,可以实现的功能以及实现的原理是不同的。这篇文章的目的就是帮大家理清快捷指令中都支持哪些第三方工具,怎么从一个整体性的结构去理解它们的区别。当下一次你想制作快捷指令时,就能拥有预判的能力,知道该采用什么工具、如何找到它们、以及它们能做到什么。

内置的第三方操作

这批操作从 Workflow 时期就一直存在,由当时的 Workflow 团队维护。Workflow 被苹果收购后,可能基于商业竞争、版权等原因,曾去掉了一部分第三方操作,包括 Google 翻译、Google 地图、Pocket(后来又加了回来)、Line、Telegram、Uber 等,剩下的则被保留了下来,并由苹果继续维护。

这些内置的第三方操作可以分为两类,一类是通过 iOS 传统的自动化方式 URL Schemes 来实现,另一类则是通过公开的网络服务 API 来实现。

利用 URL Schemes

URL Schemes 可以说是 iOS 最传统的自动化方式,

[rihide]

最早由苹果建立,用于自家应用的简单跳转,比如在 Safari 浏览器里输入 mailto:tcook@apple.com,就会跳转到给 tcook@apple.com 这个邮箱发邮件的界面;后来 URL Schemes 由 Launch Center Pro、Drafts 等第三方应用发扬光大,用于跳转更多应用的进阶功能,并演变出了 x-callback-URL 这种可以来回跳转的进阶语法,比如打开 OmniFocus 的某个透视、或者批量给 OmniFocus 添加任务,最后再返回 Drafts 里。关于 URL Schemes 详细的发展历史以及用法,可以看 Hum 写的这篇《URL Schemes 使用详解》。

URL Schemes 稍微有点上手难度,因为它几乎是完全依靠字符串来编写的,没接触过的读者很容易就觉得是在写代码。比如将一段文本添加到某个 Drafts 笔记的结尾,用 URL Schemes 来写的话是这样:

drafts5://x-callback-url/append?uuid=[笔记_UUID]&text=[文本内容]

而快捷指令对 URL Schemes 做了一个传承,将传统的字符串优化成图形界面。上面这个发送文本到 Drafts 笔记的动作,在快捷指令中用图形界面实现起来是这样的:

快捷指令的图形界面

前面那一串 drafts5://x-callback-url/append?uuid 你都不需要记住,只需要填入笔记 UUID 和文本内容就行,明显更简洁易懂,对于普通用户来说也更友好。这也是快捷指令一直努力的方向,将强大的功能包装成容易操作的图形界面,是一种模块化编程的思维。

这些利用 URL Schemes 实现的第三方操作有两个特点:

  1. 需要安装应用:要用到哪个应用的操作,就要安装对应的应用。
  2. 需要跳转:执行操作时,必须跳转到应用里。

比如前面这个发送文本到 Drafts 笔记的快捷指令,运行过程中会跳转到 Drafts 应用,然后再跳回快捷指令,没办法做到全程都在快捷指令内部执行。这样的坏处是:1. 反复跳转比较消耗时间,也会影响注意力,打断感很强;2. 无法在通知中心等地方完整运行。这两个特性,就决定了 URL Schemes 类操作是「终结者」的角色,往往放在任务的最后一步。

目前快捷指令中通过 URL Schemes 实现的第三方操作有:

  • OmniFocus
  • Ulysses
  • Drafts
  • Things
  • Bear
  • Tweetbot
  • Overcast
  • GoodReader
  • Chrome、Editorial、Pythonista、Tally 等……

基于第三方应用本身的 URL Schemes 开放程度,对应的快捷指令操作可以进行不同程度的自定义。对 URL Schemes 支持完善的应用,相应的操作中可以实现的功能也更多,比如 Drafts 就有「打开草稿」「获取草稿内容」「添加到草稿」「运行 Drafts Action」等不同作用的操作;OmniFocus 的操作中也有「名称」「项目」「截止日期」「上下文」「旗标」「附件」「备注」等丰富的参数可以选择。

对 URL Schemes 支持完善的应用,相应的操作种类和参数数量也丰富

对 URL Schemes 支持不完善的应用,也就只有一两项简单的功能,比如 Overcast 只有「添加到 Overcast」一个用于添加订阅源的操作1 ,Chrome 只有「在 Chrome 中打开 URL」一个操作,并且都没有其它参数可以选择。

对 URL Schemes 支持不完善的应用,相应的操作种类和参数数量也比较少

这批应用有很多都是从一开始就被内置到了快捷指令(Workflow)里,从这儿我们也能看出积极适配自动化功能的意义——支持 URL Schemes 本身就是优秀应用的标志,因为支持 URL Schemes 而被快捷指令(Workflow)选入应用内,甚至被苹果官方维护至今,更是优秀 app 的标志。类似的标志还有及时适配新系统特性、是否支持共享表单(Share Sheet)、辅助功能是否完善、是否支持 TextExpander 等。

URL Schemes 虽然比较古老,但一时半会儿还不会消失。我们在快捷指令里时不时会通过「URL」和「打开 URL」这两个操作来实现自定义的 URL Schemes,而且 URL Schemes 在 Launch Center Pro、Drafts 这些应用里依旧是主要的自动化编写方式,最近刚发布的 Drafts 16 也能让 URL Schemes 在 macOS 里继续发挥作用。

利用网络 API

具有服务属性的应用,往往都会提供公开的网络 API(应用程序接口),允许任何人通过 API 从服务发送和接收内容。快捷指令也早就接入了一批通过网络 API 实现的第三方操作,有:

  • Evernote/印象笔记
  • Todoist
  • Instapaper
  • Pocket
  • Pinboard
  • Trello
  • CloudApp、Tumblr、WordPress 等…

网络 API 类操作的特点刚好和 URL Schemes 类操作反过来:

  1. 不需要安装应用:在快捷指令内登录对应的服务账号就行。
  2. 不用跳转:全程可以在快捷指令内运行,但需要联网。

比如添加「追加到“印象笔记”中」这个操作到快捷指令后,它会提示你登录印象笔记的账号。填好相关信息和预置参数运行后,界面会一直保留在快捷指令里,中间不需要任何跳转。

通过网络 API 实现的操作不需要跳转

又比如从 Pocket 抓取「睡眠」标签下的文章,也不需要安装 Pocket 的 iOS 客户端,直接从 Pocket 服务器就能抓取这些文章列表。

抓取 Pocket 某个标签下的文章列表

一个简单的区分网络 API 操作和 URL Schemes 操作的技巧是,看操作右上角是否有「设置」按钮:如果有,那就是网络 API 操作,点进去可以看到登录的账号;如果没有,那就是 URL Schemes 操作。

网络 API 操作右上角的「设置」按钮

除了不用跳转,网络 API 操作还有个好处是云端同步。比如前面这个印象笔记的操作,作用是将摘抄文本发送到「摘抄」笔记本里,当我发送完成后,直接去到其它平台的客户端就能看到这条摘抄笔记。想必你也遇到过打开桌面客户端后发现内容没有同步,又返回去手机打开应用手动同步的情况,API 类操作就能解决这个问题。

因为 API 类操作不用跳转和云端同步的特点,所以我会更倾向于用这类操作来发送内容,就算有的服务没有被内置到快捷指令里,也会用「获取 URL 内容」操作来制作,比如我们常常在 Power+ 里提到的 Toggl 计时,就是自制的 API 类操作。这类操作更容易和其它自动化流程协作,放在通知中心和辅助触控里都能完整运行。

第三方应用提交的操作

从 iOS 12 开始,快捷指令就获得了平台特性,第三方应用开始可以为快捷指令提交操作。到了 iOS 13,第三方提交的操作从不能传递数据到可以传递数据,完成了一次进化。这段时间出现了很多支持快捷指令的应用,但由于每一次变化都需要开发者主动适配,因此应用和应用之间存在断层,并不是所有的第三方应用都支持 iOS 新特性。这些应用提供的操作大致可以分为三类:Siri 建议操作、专向功能操作、通用工具。

Siri 建议操作

Siri 会基于你的 iOS app 使用习惯、来自第三方 app 的信息、浏览历史记录、电子邮件、信息和联系信息等,向你提出快捷指令建议。这些建议的快捷指令里,有的是下一节会提到的第三方应用内的专向功能,还有一类比较特殊,如果你常用的话它就会显示,一段时间不使用后就会消失。

这类操作实现的功能往往步骤单一,一般是打开 app 的某个界面,或者运行 app 里的某项功能。比如我最近在看 Hum 推荐的《Take Control of DEVONthink 3》这本电子书,我把它放到了 MarginNote 里。因为最近打开得比较频繁,所以在快捷指令里搜索 MarginNote,就能看到它给我推荐了直接打开这份电子书文档的操作。2 

Siri 推荐的 MarginNote 操作

但如果我长时间不看这本书了,这些操作就会消失。或者我开始看其它电子书,就会出现新的操作建议。既基于使用频率,也基于你使用的内容。类似的推荐功能,还能在这些 app 里见到:

  • GoodNotes:最近打开过的文档
  • Ulysses:最近编辑过的文章
  • Overcast:最近播放过的播客
  • 网易云音乐:最近播放过的歌单3 
  • MindNode:最近编辑过的脑图
  • Drafts、Bear:最近编辑过的笔记
  • Todoist、OmniFocus:最近打开过的项目、标签、过滤(透视)
  • ……

有些开发者还会将 Siri 建议预置在 app 内,由用户按需手动添加。比如在 Drafts 里打开某条笔记的简介页面,就能看到「Add to Siri」按钮,然后让你自定义输入短语。官方的电话、短信、邮件、Pages、Numbers、Keynote 等应用,也经常会出现在快捷指令的推荐内容里。

基于 Siri 建议的操作基本都是一些简单直接的功能,也是一般用户最容易接触到、也最容易上手的快捷指令,因为从添加到使用往往就一步。另外 Siri 建议还会根据地理位置、时间、运动类型等状态,在锁屏界面和 Spotlight(搜索界面)向你推荐快捷指令操作。

专向功能操作

专向功能操作是第三方应用向快捷指令提供的另一种类型的操作,它们统一放在快捷指令编辑器的「App」分类里,对应各自 app 内的专向功能。比如 OmniFocus 提供的操作就只和 OmniFocus 内部的功能相关,不会涉及到列表排序、检查天气等功能。此外还有 Fantastical、Ulysses、Todoist、Things、JSBox、Fantastical、PCalc、CARROT Weather、 Fiery Feeds、Due、Launch Center Pro、Reeder 等应用,也适配了各自的专向功能操作。

根据不同应用的不同适配程度,它们有的能传递数据,有的不能。比如 Todoist 的「显示今天的所有任务」操作,就只能展开一个卡片显示内容,无法将任务抓取下来,作为数据传递到下一步操作中。

Todoist 的「显示今天的所有任务」操作不能传递数据

比如适配过 iOS 13 的计算器应用 PCalc,它的汇率转换操作就可以作为自动化中的一步,将前面输入的美元转换为人民币,并输出到下一步操作中。

PCalc 的汇率转换操作可以传递数据

如果你想要快速判断一个操作能否传递数据,只需要点开它的描述,如果「输入」和「输出」均有内容,则是支持传递数据;如果显示「此操作将输入作为输出传递」,则是不支持传递数据。

看到这里你可能会有点疑惑,怎么有的应用好像既有内置操作,也有 Siri 建议,还有专向功能操作,比如 Todoist、Drafts、Ulysses。这三种类型确实是可以同时存在的。内置操作由苹果官方维护,Siri 建议和专向功能由开发者提交和维护。后两者的区别是 Siri 建议不用就会消失,基于使用习惯推荐;专向功能则会一直存在,根据 iOS 适配情况的不同决定是否能传递数据。

这些支持传递数据的操作,让不同的 app 的数据沟通成为了可能,在未来会慢慢成为 iOS 自动化的中坚力量,内置的第三方操作也会慢慢被这部分替代。因为苹果很难兼顾到所有的 app,Todoist、Trello、OmniFocus 那几个内置操作,从发布后就几乎没怎么更新过,而且功能一直不够完善,比如 Todoist 和 OmniFocus 的内置操作都不支持添加标签、Trello 内置操作不支持添加卡片负责人。开发者自己提交的操作毕竟是自家儿子,肯定会更明白用户的需求。

专向功能操作的特点介于 URL Schemes 操作和网络 API 操作之间:

  1. 需要安装应用:要用到哪个应用的操作,就要安装对应的应用。
  2. 可选跳转: 执行操作时,有个开关可以选择是否跳转。

此外,专向功能操作还有个明显的特点是非云端传输。一个比较明显的例子是,最近 Todoist 发布了一次更新,里面新增了一项「创建任务」专向操作,和快捷指令中原先就内置的「添加 Todoist 项目」是同样的功能,都是用于添加任务。区别在于,新增的专向操作添加任务后需要打开 Todoist 应用才能同步数据;原先内置的操作走的是网络 API,不需要打开 Todoist 应用就能同步数据。

Todoist 新增的专向功能操作和原先内置的网络 API 操作

通用工具

最后要提到的分类比较特别,目前只有一款应用,就是我们之前在 Power+ 里介绍过的 Toolbox Pro

Toolbox Pro 是一款用通用思路去对待快捷指令模块化的工具,它不是专门为某一款第三方应用设计的,它的功能(操作)单独存在没有意义,也不能单独使用,必须依附于快捷指令。当 Toolbox Pro 的操作作为零件,和快捷指令的内置操作或其它第三方操作组合在一起时,就形成了它的威力,实现一些原先做不到的功能。关于 Toolbox Pro 的详细用法我之前在《Toolbox Pro 使用详解》里介绍过,这里就不多加赘述。

作为快捷指令零件的 Toolbox Pro

Toolbox Pro 用的时候不用太注意,把它当成快捷指令的一部分就行,但缺点是 Toolbox Pro 提供的操作只能通过「App」分类里的「Toolbox Pro」、或者通过搜索找到,不会出现在编辑器的其它大分类里。另外 Toolbox Pro 目前只有英文,如果你使用中文系统的话,可能每次得搜两种语言。

结语

在 iOS 沙盒机制的限制下,快捷指令(Workflow)曾经突破性地将各种功能串到一起,有系统功能,也有通过 URL Schemes 和网络 API 实现的第三方操作。被苹果认可并收购后,又获得了更多的系统权限以及 Siri 结合等诸多独有功能,成为了 iOS 上最强大的自动化工具。

但快捷指令也不是无所不能,一款工具很难兼顾到用户的所有自动化需求,所以苹果将它开放出来,由开发者们来为快捷指令添砖加瓦,开发各种应用专属的第三方专向操作。再后来 Toolbox Pro 的出现,以通用工具的思路,从各方面强化了快捷指令的能力,并扩展了 iOS 自动化的可能性。

希望你在看过这篇文章之后,对快捷指令第三方工具的支持情况有结构性的了解,知道这些工具的特点和边界在哪,自己制作时也更得心应手。


感谢 Hum 提供了这篇文章的选题 idea 以及对第三方工具的分类思路。1Overcast 后来有很多开发者自己提交的操作,这个后面会谈到。2理论上还可能会出现在快捷指令编辑器顶层的「建议」里。3Spotify 曾短暂支持过,但最近几个版本又不支持了。

[/rihide]  

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容