本文的步骤属于中等复杂程度,如果遇到问题,请加入会员(Beta 价格 ¥248/年)详细询问。本站作者会对会员进行文字/语音答疑。
iOS 17 带来“真・自动化”
群友 @AlonAN 从 iOS 16 时期开始就提出了一个这样的需求:
能不能让 iPhone 在开会时自动进入勿扰模式?在会议结束后退出勿扰模式?
在当时,Shortcuts 的自动化可以说是个“伪・自动化”所以不能做到。“伪・自动化”的意思是,你设置了一个触发一系列操作的条件,它满足了这个条件也不会真的自动触发,而是会有一个通知,需要你点开通知同意运行。比如“当我到家连上了家里的 Wi-Fi,就关上了流量”这个自动化。如果你到家里连上家里的 Wi-Fi,它不会自动关上蜂窝,而是会弹出一个通知,问你同意不同意这个 Shortcuts 运行?如果你同意,它才会帮你切换。很明显,这个自动化里包括了手动成分,哪怕只有一下。
直到 iOS 16,大多数的自动化触发条件,特别是牵涉到“发送消息”相关的,都是“伪・自动化”。但是在 iOS 17,绝大多数的自动化条件,可以设置“立即运行”。这样,人们就不需要再“确认”那一下。自动化变成了“真・自动化”。
这样一来,@AlonAN 的需求就可以满足了。
流程概览
注:因为原理基本一样,同时为了篇幅、结构和阅读方便。本文先写最 tricky 的部分,也就是怎么样做到“日历日程开始 → 开启勿扰模式”。自动关闭的部分可以按此方法反推,也有更好的办法,需求高的话另写。
理论上,这个需求的思路极其简单:
- 指定某个日历
- 当这个指定的日历中的任何事件开始
- 打开勿扰模式
但是目前(iOS 17 Dev Beta 2)是不支持用日历当作自动化触发条件的。所以这个思路目前不可行,需要找一些替代方案。说这个思路目前不可行,是因为它没有永远不可行的道理。从隐私、安全各个角度来看,Shortcuts 都是完全可以用日历日程作为触发条件的。所以当未来一旦 Shortcuts 可以用日历作为触发条件,我会毫不意外,而且也建议有这个需求的换为系统内置的日历日程作为触发条件。因为环节更少、第三方环节更少,也就更稳定。
那么,目前的代替方案,思路如下:
- 用 Zapier 关联 Gmail 或者 Outlook
- 当日历日程开始时,发送一封特制的邮件给自己
- 把 Shortcuts 的自动化设置为,当收到这封特制的邮件,开启勿扰模式
这个方案的 Zapier 可以换成 Microsoft 的 Power Automate或者任何其它的可以读取你邮件服务的自动化服务。
具体步骤
第一步:通过 Zapier 关联日历。
因为基础步骤很多,比如“注册、登陆、按这个按钮新建自动化、搜索 Gmail、关联账户”……相信本站读者比特素养很高了,所以在第一步里,先只写需要特殊注意的关键步骤。
这里有 2 个需要注意的步骤:
- 我们不只是关联日历账户,我们要指定日历账户中的某个日历。
- Zapier 的免费账户限制:Zapier 的免费账户不是实时推送而是在事件发生的(至少) 16 分钟之前推送。
这里对上述两个问题配图详细说明一下。
Zapier 有要求选择指定的日历,这里要注意一下。这就相当于一个 Todo 软件里有多个 List 来组织管理不同上下文的任务一样。一个日历账户里也会有多个目的的日历。用的人都明白啦,不用的人来群里提醒我写相关文章。
然后是 16 分钟限制,Zapier 要求设置在日历开始多久前触发动作:
免费账户的限制是 16 分钟,所以这里最短填16
。虽然不是实时触发,我倒是觉得提前一点没什么不好的。用 Outlook 的可以用 Microsoft 的 Power Automate,估计实时程度要高一点。
第二步:当日历日程开始,给自己发一封邮件。
用发邮件这一招是因为 Shortcuts 可以用邮件的相关信息做为触发 Shortcuts 的条件,比如发信人、关键字等。根据这个特点,我们可以设计一封不会和其它邮件混淆的特殊邮件,来作为触发自动化的条件。
这个邮件模板首先要在 Zapier 里确定。你可以关联任意的邮件账户,因为我们对发信邮箱没有任何要求。当你关联好账户,我们开始看发送邮件的细节:
- 收件人:最好是 Gmail,其它也可以,但都要在 iOS 的邮件客户端里设置好账户
- 标题:
ShortcutsDoNotDisturb
。标题的关键就是不可能和别的重复。直接复制我这个应该也不会重复,也可以稍作微调。以防万一,请用英文。 - 内容:其实可设可不设,但害怕邮件直接被当作垃圾邮件被处理,可以添加一些内容,但不重要。
设计好这两个细节即可。下面来看 Shortcuts 里的相应设置。
第三步:在 Shortcuts 里设置收到邮件后的自动化
在 Shortcuts 里找到自动化,添加新的自动化,选择“电子邮件”,再进行如下详细设置:
首先是触发条件相关,这里当然是要和 Zapier 里的内容完全一致:
- 收件人:你在 Zapier 中设置的收件人
- 标题:
ShortcutsDoNotDisturb
- 勾选 “立即运行”
随后,选择下一步,设置当条件满足时触发什么动作。在这里,我们要触发的是“勿扰模式”,所以把勿扰模式开启即可。
收尾
自此,核心步骤就完成了。但如果追求高一点,还需要至少作以下两件事:
- 把这些标题为“ShortcutsDoNotDisturb”自动归档。
- 设置事件结束后关闭勿扰模式。
自动归档是肯定要的,不然收件箱里会塞一堆标题为“ShortcutsDoNotDisturb”的邮件。自动 Archive,也有很多解决方法各位可以自行搜索,我用的是 Gmail 的 Filter 功能。
日历日程结束后关闭勿扰模式,实际上是简单的,就是在开启勿扰模式的 Shortcuts 里加以下几个动作:
- 获取临近日程:获取某个日历(你开启勿扰模式的那个日历)的下一个日历日程,也就是你会议这个日程
- 设置打开勿扰模式直到日程结束:把日程设为上一步获取的临近日程即可。
小结
“能让 iPhone 在开会时自动进入勿扰模式,在会议结束后退出勿扰模式”这个需求是合理的来自于真实工作场景的需求。可以在 iOS 17 基本得到解决。但也可以看到,通过嫁接第三方服务来解决需求,还是多少不太方便。需求强的可以先用着,不强的可以等等。以日历日程为自动化的触发条件这么合理的设计,希望苹果赶快意识到。