一日一技:iOS下的开源免费消息推送服务

我们在部署代码到线上以后,可能会需要在一些情况下给自己发报警通知。如果是公司的线上业务,一般会有公司内部的各种通知工具。

但如果是自己的个人服务,我们应该怎么推送消息呢?有些同学可能使用过叮叮或者飞书机器人,但是这些机器人要发送通知还需要拉个群,稍微有点麻烦。有些同学可能使用的是Telegram,但使用它需要梯子也不太方便。

如果你的手机是iPhone,那么你可以使用一个开源免费超级轻量级的消息推送服务:Bark.

使用Bark只需要简单调用接口即可给自己的iPhone发送推送。它只依赖苹果APNs,及时、稳定、可靠。不会消耗设备的电量, 基于系统推送服务与推送扩展,APP本体并不需要运行。能够使用点对点加密,实现隐私安全,确保即使是Bark的开发者在内的所有人都无法窃取你的隐私。

使用Bark非常简单,首先在Apple Store搜索Bark并安装,如下图所示:

安装完成以后,只有第一次需要打开这个App,从里面复制通知地址,如下图所示:

复制其中的URL,并修改URL里面的中文,就可以实现通知了。例如我的URL是:

1
https://api.day.app/asdfasdfasd/这里改成你自己的推送内容

把其中的这里改成你自己的推送内容改成我需要推送的内容,例如:

https://api.day.app/asdfasdfasd/除了在未闻Code公众号与kingname.info外的任何地方看到本文均为违规转载欢迎大家举报

可以使用Python或者干脆直接在浏览器访问这个地址,你的手机就会收到通知,如下图所示:

推送的消息还可以点开,点开以后可以复制或者分享消息,如下图所示:

如果你推送的消息是一个URL,那么当你点击推送的URL时,可以自动使用浏览器打开这个URL。而且这里的URL还可以是URL Scheme.如果你知道URL Scheme,你就知道它可以打开App的特定功能,以滴答清单为例。可以在这里看到滴答清单的URL Scheme和使用说明

我现在使用滴答清单的快速添加任务这个功能,当我的线上服务出现bug时,给我发送通知,当我在手机上点击通知以后,自动在我的滴答清单创建一个待办事项。

创建任务的URL Scheme是:ticktick://x-callback-url/v1/add_task?title=任务文本。因此,我们可以使用如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
import requests
from urllib.parse import quote


message = '线上系统发生故障,立刻修复'

body = {
'url': f'ticktick://x-callback-url/v1/add_task?title={quote(message)}',
'body': message
}
resp = requests.post('https://api.day.app/asdfasdfasdf', json=body).json()
print(resp)

运行这段代码以后,手机就会收到消息推送,如下图所示:

点开这个通知,就会自动跳转到滴答清单并自动添加任务,如下图所示:

通过修改URL Scheme的参数,可以添加到不同的任务清单里面或者实现更多复杂操作。具体可以参阅滴答清单的文档。

从上面这个例子可以看到,借助Bark,我们可以实现非常多的自动化工作流,从而大大提高工作效率。

在Bark的文档和Github中,你还可以看到如何自定义Bark后端服务器和如何实现消息加密的方法,从而让你彻底掌控Bark的所有消息通知,避免敏感信息泄漏。


未闻Code Telegram Channel开通了!每天都有各种开发小技巧更新,速来!!