Bark 是一款 iOS 端的推送服务,通过部署一个 Server 服务端,可以通过浏览器,脚本,以及各种程序里来给 iOS 设备发送推送通知。
这个项目其实已经出来有好几年了,只是最近在优化一些运维管理项目时才接触和使用,在使用了几个月后还是打算分享下部分小技巧。
首先需要一个服务端,本文会介绍如何部署。然后 iOS 设备在 App Store 安装Bark
,获取到该设备的唯一key
,通过浏览器、curl 命令或者在各种 shell python 脚本里来配置推送内容。触发后,服务端接受到推送,会请求苹果的APNs
向你的 iOS 设备发送推送通知。
key
和内容
都会记录到服务器日志中,请不要使用免费服务器来推送机密或私有信息
,也请不要滥用。你可以继续参照下文部署自己的服务端。使用 docker 来部署非常简单,官方镜像支持 X86 和 ARM 架构。
docker run -dt --name bark -p 8080:8080 -v `pwd`/bark-data:/data finab/bark-server
根据情况自行修改端口映射和数据目录的挂载。
version: '3.8'
services:
bark-server:
image: finab/bark-server
container_name: bark-server
restart: always
volumes:
- ./data:/data
ports:
- "8080:8080"
部署完毕后http://IP:8080
就是 bark 的后端服务地址,可以直接使用,也可以参考以下 nginx conf 来配置域名和 HTTPS。
iOS 设备直接在 App Store 下载bark
,打开后添加 bark 后端服务器地址。(实际上不添加也不影响使用,只是添加服务器端可以方便的在 app 里查看到各种推送地址方便复制使用。)
同时也会看到本设备的一串key
,请不要随意泄露此key
,以免被别人滥用推送垃圾通知,如果泄露也可以通过删除 app 重新安装来更新。
其实 app 内和官方文档已经很好的介绍了如何使用,最简单的例子如下:
浏览器中打开
https://bark.ioiox.com/your_key/标题/内容
curl命令(可以用于 shell python 脚本中)
curl https://bark.ioiox.com/your_key/标题/内容
还可以配置分组,分组的意思是在 iOS 端里的历史记录中可以根据分组来查看各种通知。
https://bark.ioiox.com/your_key/标题/内容?group=IOIOX
常规在浏览器或者命令行推送对文字的空格,换行都是需要进行 url-encoder 才能识别,以下是一些我在使用中用到过的示例,大家可以直接拿去使用。
换行符为%0a
,注意标题是不支持换行的。
https://bark.ioiox.com/your_key/标题/内容%0a换行
https://bark.ioiox.com/your_key/网站服务通知/网站:www.ioiox.com%0a状态:运行正常
空格符为%20
,标题也是可以使用空格符。
如果是在浏览器里发送推送,可以直接在内容里使用空格,浏览器会自动转换。
https://bark.ioiox.com/your_key/标题/内容 空格
如果在命令行里则需要使用空格符
https://bark.ioiox.com/your_key/标题/内容%20空格
例如/
符号也是需要进行 url-encoder 获得%2F
。
https://bark.ioiox.com/your_key/GitHub/stilleshan%2Fdockerfiles
https://bark.ioiox.com/your_key/GitHub%20Action/仓库:%20stilleshan%2Fdockerfiles%0a状态:%20Workflow%20工作流成功
正常情况下 icon 配置,icon 图标会缓存到 iOS 设备中。
https://bark.ioiox.com/your_key/标题/内容?icon=https://www.ioiox.com/avatar.jpg
如果同时还需要配置 group 等,则需要使用&
来拼接。
https://bark.ioiox.com/your_key/标题/内容?icon=https://www.ioiox.com/avatar.jpg&group=IOIOX
基本上以上一些小技巧应该能完全满足大部分的需求了。当然 bark 还支持 Jason 格式的请求,相信会 Jason 的程序员们应该不需要我来教了,直接查看文档即可。