zzxworld

iPhone 使用快捷指令(Shortcuts)实现自定义提醒功能

我有个实验性质的个人项目:BlogFinder,这个项目提供了一个站点提交的功能。当有人提交了博客站点后,我需要在后台核对站点是否符合收录标准,然后完善并补充相关的数据。为了避免让提交者等太久,我会每天在几个固定的时间段登陆后台,查看是否有新的提交信息并及时处理。

这个操作大多数时候没有意义,因为不是天天都有人提交。但说不准什么时候又会来几个,所以在心里层面会老惦记着这事。虽然我可以降低查看的时间频率,但一天一次还是要能保证。即便是这样,一连几天都没有新站点申请也是大概率事件。这让我觉得老惦记着这事实在没必要,最好还是在有人提交后能通过某种方式提醒我,然后我再去处理。

方案选择

要实现通知的功能我目前想到的有三种方案: 电子邮件,短信和微信。短信要钱直接放弃。电子邮件是个不错的成熟方案,但是要有每天随时看邮箱的习惯,我没有,放弃。至于微信我其实也不怎么用,我甚至把它的屏幕通知提示功能权限都关了。思来想去的,最终我把目标放到了 iPhone 自带的 Shortcuts 上。

Shortcuts 的中文名称叫快捷指令。它提供了一种类似于 Linux 系统下管道命令符的组合能力,可以把各种原本相互独立的 App 功能按条件串联到一起来,让它们实现更丰富,更强大的自定义功能。我决定就用它来实现我的待处理通知功能。

后端结构准备

首先需要在项目的服务器上提供一个接口,用来返回待处理的数据。接口返回数据使用 JSON 格式,数据结构如下:

{
    "total": 1
}

total 后的数字就代表了要处理的申请数量,如果是 0 表示没有需要处理的信息。访问这个接口确保返回数据正常,记住访问地址,等下要用。接下来都是在 iPhone 手机上的操作。

创建快捷指令

在手机上打开快捷指令(Shortcuts) App。

IMG_1807.PNG.jpg

点右上角的 + 图标进入新增快捷指令界面。

IMG_1808.PNG.jpg

自定义一个快捷指令名称,然后点「添加操作」按钮来到指令库的选择界面。

IMG_1810.PNG.jpg

选择「网页」类别,然后选择「获取 URL 内容」指令。选择后界面会返回到快捷指令的添加界面。

IMG_1809.PNG.jpg

可以看到这个界面多了一个内容块,点击这个内容块的 URL 字样部分,会提供一个输入框,在这里输入上面准备好的接口地址。

IMG_1811.PNG.jpg

上面我用的本地调试地址,请替换为自己正确的地址。完成输入后点击右下方的三角符号,可以测试地址请求和返回数据。第一次运行会弹出一个隐私确认选项,选择允许。确保能返回正常 JSON 结构的数据。

IMG_1812.PNG.jpg

像我上面这样就没问题了。接下来点击下方的「搜索 App 和操作」框继续添加指令。操作过程和刚才类似,我就不截图说明了,只提供相关指令的名称和选择原因。最后我会展示一张完整的指令结构截图。

  1. 因为通过「获取 URL 内容」指令返回了需要的数据,接下来需要提取数据中的 total 数值,所以需要用到「脚本」类别下的「获取词典值」指令。
  2. 通过上面的步骤获取到 total 的值后,需要对值进行判断,只有大于 0 的值才需要处理。这步需要用到「脚本」类别下的「如果」指令。在如果指令中点击「词典值」,调整类型为「数字」;然后选择「条件」,使用「大于」条件,在「大于」条件后的输入框中填写 0。因为只需要大于 0 的条件,「如果」指令附带的「否则」指令没有什么使用价值,点它右边的「x」图标删除。
  3. total 值大于 0 时我选择使用 iPhone 自带的通知功能来进行提示。选择「脚本」类别下的「显示通知」指令。然后通过拖放调整它的位置到「如果」和「结束条件」之间。点击「显示」后的「你好,世界」并把它们删除,先输入一个字「有」,然后点一下虚拟键盘顶部「词典值」变量,后面跟着继续输入「条待处理申请」。

大功告成,来看看完整的指令截图:

IMG_1813.PNG.jpg

点右下角的三角图标运行一下试试。

IMG_1814.PNG.jpg

注意顶部弹出的提示信息,这表示运行成功。把接口返回的数值改为 0,再次执行试试,应该不会有任何提示信息弹出。

定时运行

目前我完成了符合需要的快捷指令,最后一步是让它能够在指定时间自动运行。回到快捷指令的主界面,点击界面下方的「自动化」菜单后进入自动化功能的主界面。

IMG_1816.PNG.jpg

点击「创建个人自动化」进入创建新自动化界面。

IMG_1817.PNG.jpg

选择「特定时间」转入自动运行时间的相关配置界面。

IMG_1818.PNG.jpg

选择想要执行的时间,然后在「重复」选项中选择「每天」。点击右上角的「下一步」继续。

IMG_1819.PNG.jpg

选择「添加操作」,然后在「脚本」类目中找到「运行快捷指令」,并选择刚创建的快捷指令。

IMG_1820.PNG.jpg

点击「下一步」继续。把「运行前询问」选项关闭,点击完成,自动化运行的设置部分就准备就绪了。关闭手机屏幕,等到了设置自动运行的时间后,如果有新的申请数据,应该会显示如下的提示信息。

IMG_1821.PNG.jpg

目前 iPhone 快捷指令中提供的自动运行只能指定一个固定的时间,如果需要在多个时间段运行就需要创建多个「个人自动化」配置。不过也没多大必要,因为快捷指令还支持通过 Siri 语音交互的方式随时执行,所以有一个定时执行的也可以了。