引言
Bark 是一款我最近很常用的推送 App,具体介绍可以参考少数派的 这篇文章 以及小众软件的 这篇文章。简单来说,Bark 是一款超级轻量级的 iOS 端消息 push 接收工具,消息推送走的是苹果官方的 push 通道,实时性和稳定性都非常可靠。这个 App 支持自定义请求,自行部署服务器, 客户端 与 服务端 均是开源的,适合注重隐私的用户。
Bark上手及脚本操作介绍
Bark上手
首先在 App Store 上下载 Bark 客户端,安装完成后打开安装的应用。第一次打开时,主界面如图,点击”注册设备”,并在弹出的授权窗口中,允许应用发送通知。
授权之后的应用主界面如图,显示了目前支持的几种推送消息格式的请求链接,它们均以 https://服务端地址/设备识别码/推送内容及参数
为格式。直接在浏览器中访问各个链接,可以测试 Bark 推送的各项功能,目前支持标题、正文、URL 跳转及自动复制功能。
Bark 请求参数说明
Bark 支持 GET 和 POST 请求,只需向服务端发起相应类型的请求,并传递相应的参数即可。请求的标准格式为 https://{server}/{key}/{category}/{title}/{message}?{option}={opt_val}&{option}={opt_val}
,各项参数的说明如下:
- server: 接收请求的服务端地址, 默认为
api.day.app
,是 App 作者自有的服务器。用户自行部署服务端后可以将其替换掉; - key:设备识别码,用于区分不同的设备,每次删除 Bark 应用再重新安装后会重置。发起请求时设备识别码决定了通知会被推送到哪部设备上,请保管好自己的设备识别码,避免被无聊人士骚扰;
- category: 保留字段,目前无用,后续作者可能会用于扩展功能,可以为空;
title: 推送通知的标题,字号比正文粗,可以为空;
message: 推送消息的正文,文本内容用”\n”换行;
- option: 其它参数,用于设置手机在接收到通知后的特殊操作,可以为空,目前支持以下三个参数:
- automaticallyCopy: 参数值为1时,收到通知推送后系统会自动复制通知文本。可通过
copy
参数配置复制的文本; - copy: 配置自动/手动复制时,具体要复制的文本。没有该参数时默认复制通知文本全文;
- url: 配置点击通知时,要跳转的网页。没有该参数时点击通知自动打开 Bark 应用。
Bark 脚本操作方法
GET 请求
GET 请求会将请求的各个参数直接放在链接中,Bark 应用的首页介绍的各个链接都是使用这种请求形式,可以直接使用浏览器访问来发起,如直接访问 https://api.day.app/yourkey/验证码是1234?automaticallyCopy=1
可以向 yourkey 对应的设备发送”验证码是1234”的通知,并让设备在收到通知后自动复制通知全文。
除了通过浏览器直接访问,还可以通过程序/脚本发起请求。以 Python 为例,通过 requests
库可以很简单地向服务端发起请求:
1 | import requests |
POST 请求
GET 请求会将参数明文暴露在访问的 URL 中,出于安全考虑,使用 POST 请求更为妥当。通过 POST 发起请求时,可以使用 这个工具 来发起。注意,通过 POST 发起请求时,应该向 {server}/{key}/
(如 https://api.day.app/abcd1234dcba/
)而不是 {server}
(如 https://api.day.app
)发起请求,设备识别码是请求地址的一部分。
设备收到的推送通知如图:
同样,我们可以通过程序/脚本发起请求。以 Python 为例,POST 请求的代码与 GET 请求的不太一样:
1 | import requests |
后记
写这篇文章是因为现在网上很少 Bark 相关的内容,尤其是如何通过程序/脚本来发送通知的内容,根本找不到资料,只能自己摸索(大概是我太菜了吧……)。这篇文章算是个整理吧,接下来准备马克一下怎么部署自己的服务端,以及配置 Apache 实现 https 安全连接。Mew~