article_image

本文的步骤属于中等复杂程度,如果遇到问题,请加入会员(Beta 价格 ¥248/年)详细询问。本站作者会对会员进行文字/语音答疑。

iOS 17 带来“真・自动化”

群友 @AlonAN 从 iOS 16 时期开始就提出了一个这样的需求:

能不能让 iPhone 在开会时自动进入勿扰模式?在会议结束后退出勿扰模式?

在当时,Shortcuts 的自动化可以说是个“伪・自动化”所以不能做到。“伪・自动化”的意思是,你设置了一个触发一系列操作的条件,它满足了这个条件也不会真的自动触发,而是会有一个通知,需要你点开通知同意运行。比如“当我到家连上了家里的 Wi-Fi,就关上了流量”这个自动化。如果你到家里连上家里的 Wi-Fi,它不会自动关上蜂窝,而是会弹出一个通知,问你同意不同意这个 Shortcuts 运行?如果你同意,它才会帮你切换。很明显,这个自动化里包括了手动成分,哪怕只有一下。

直到 iOS 16,大多数的自动化触发条件,特别是牵涉到“发送消息”相关的,都是“伪・自动化”。但是在 iOS 17,绝大多数的自动化条件,可以设置“立即运行”。这样,人们就不需要再“确认”那一下。自动化变成了“真・自动化”

Alt text
Shortcuts 自动化中的“立即运行”

这样一来,@AlonAN 的需求就可以满足了。

流程概览

注:因为原理基本一样,同时为了篇幅、结构和阅读方便。本文先写最 tricky 的部分,也就是怎么样做到“日历日程开始 → 开启勿扰模式”。自动关闭的部分可以按此方法反推,也有更好的办法,需求高的话另写。

理论上,这个需求的思路极其简单:

  1. 指定某个日历
  2. 当这个指定的日历中的任何事件开始
  3. 打开勿扰模式
Alt text
理论上的思路

但是目前(iOS 17 Dev Beta 2)是不支持用日历当作自动化触发条件的。所以这个思路目前不可行,需要找一些替代方案。说这个思路目前不可行,是因为它没有永远不可行的道理。从隐私、安全各个角度来看,Shortcuts 都是完全可以用日历日程作为触发条件的。所以当未来一旦 Shortcuts 可以用日历作为触发条件,我会毫不意外,而且也建议有这个需求的换为系统内置的日历日程作为触发条件。因为环节更少、第三方环节更少,也就更稳定。

那么,目前的代替方案,思路如下:

  1. Zapier 关联 Gmail 或者 Outlook
  2. 当日历日程开始时,发送一封特制的邮件给自己
  3. 把 Shortcuts 的自动化设置为,当收到这封特制的邮件,开启勿扰模式
Alt text
实际上的实现方式

这个方案的 Zapier 可以换成 Microsoft 的 Power Automate或者任何其它的可以读取你邮件服务的自动化服务。

具体步骤

第一步:通过 Zapier 关联日历。

因为基础步骤很多,比如“注册、登陆、按这个按钮新建自动化、搜索 Gmail、关联账户”……相信本站读者比特素养很高了,所以在第一步里,先只写需要特殊注意的关键步骤。

这里有 2 个需要注意的步骤:

  1. 我们不只是关联日历账户,我们要指定日历账户中的某个日历。
  2. Zapier 的免费账户限制:Zapier 的免费账户不是实时推送而是在事件发生的(至少) 16 分钟之前推送。

这里对上述两个问题配图详细说明一下。

Zapier 有要求选择指定的日历,这里要注意一下。这就相当于一个 Todo 软件里有多个 List 来组织管理不同上下文的任务一样。一个日历账户里也会有多个目的的日历。用的人都明白啦,不用的人来群里提醒我写相关文章

然后是 16 分钟限制,Zapier 要求设置在日历开始多久前触发动作:

Alt text
选择日历和 16 分钟限制

免费账户的限制是 16 分钟,所以这里最短填16。虽然不是实时触发,我倒是觉得提前一点没什么不好的。用 Outlook 的可以用 Microsoft 的 Power Automate,估计实时程度要高一点。

第二步:当日历日程开始,给自己发一封邮件。

用发邮件这一招是因为 Shortcuts 可以用邮件的相关信息做为触发 Shortcuts 的条件,比如发信人、关键字等。根据这个特点,我们可以设计一封不会和其它邮件混淆的特殊邮件,来作为触发自动化的条件。

这个邮件模板首先要在 Zapier 里确定。你可以关联任意的邮件账户,因为我们对发信邮箱没有任何要求。当你关联好账户,我们开始看发送邮件的细节:

Alt text
Zapier 中发送邮件的细节
  • 收件人:最好是 Gmail,其它也可以,但都要在 iOS 的邮件客户端里设置好账户
  • 标题:ShortcutsDoNotDisturb。标题的关键就是不可能和别的重复。直接复制我这个应该也不会重复,也可以稍作微调。以防万一,请用英文。
  • 内容:其实可设可不设,但害怕邮件直接被当作垃圾邮件被处理,可以添加一些内容,但不重要。

设计好这两个细节即可。下面来看 Shortcuts 里的相应设置。

第三步:在 Shortcuts 里设置收到邮件后的自动化

在 Shortcuts 里找到自动化,添加新的自动化,选择“电子邮件”,再进行如下详细设置:

Alt text
Shortcuts 中的设置

首先是触发条件相关,这里当然是要和 Zapier 里的内容完全一致:

  • 收件人:你在 Zapier 中设置的收件人
  • 标题:ShortcutsDoNotDisturb
  • 勾选 “立即运行”

随后,选择下一步,设置当条件满足时触发什么动作。在这里,我们要触发的是“勿扰模式”,所以把勿扰模式开启即可。

收尾

自此,核心步骤就完成了。但如果追求高一点,还需要至少作以下两件事:

  1. 把这些标题为“ShortcutsDoNotDisturb”自动归档。
  2. 设置事件结束后关闭勿扰模式。

自动归档是肯定要的,不然收件箱里会塞一堆标题为“ShortcutsDoNotDisturb”的邮件。自动 Archive,也有很多解决方法各位可以自行搜索,我用的是 Gmail 的 Filter 功能

日历日程结束后关闭勿扰模式,实际上是简单的,就是在开启勿扰模式的 Shortcuts 里加以下几个动作:

  1. 获取临近日程:获取某个日历(你开启勿扰模式的那个日历)的下一个日历日程,也就是你会议这个日程
  2. 设置打开勿扰模式直到日程结束:把日程设为上一步获取的临近日程即可。

小结

“能让 iPhone 在开会时自动进入勿扰模式,在会议结束后退出勿扰模式”这个需求是合理的来自于真实工作场景的需求。可以在 iOS 17 基本得到解决。但也可以看到,通过嫁接第三方服务来解决需求,还是多少不太方便。需求强的可以先用着,不强的可以等等。以日历日程为自动化的触发条件这么合理的设计,希望苹果赶快意识到。