前言

Bark 是一款 iOS 端的推送服务,通过部署一个 Server 服务端,可以通过浏览器,脚本,以及各种程序里来给 iOS 设备发送推送通知。

这个项目其实已经出来有好几年了,只是最近在优化一些运维管理项目时才接触和使用,在使用了几个月后还是打算分享下部分小技巧。

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

推送流程简单说明

首先需要一个服务端,本文会介绍如何部署。然后 iOS 设备在 App Store 安装Bark,获取到该设备的唯一key,通过浏览器、curl 命令或者在各种 shell python 脚本里来配置推送内容。触发后,服务端接受到推送,会请求苹果的APNs向你的 iOS 设备发送推送通知。

免费的推送服务器

https://bark.ioiox.com

需要注意的是:所有key内容都会记录到服务器日志中,请不要使用免费服务器来推送机密或私有信息也请不要滥用。你可以继续参照下文部署自己的服务端。

Bark Server

使用 docker 来部署非常简单,官方镜像支持 X86 和 ARM 架构。

docker

docker run -dt --name bark -p 8080:8080 -v `pwd`/bark-data:/data finab/bark-server

根据情况自行修改端口映射和数据目录的挂载。

docker compose

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。

注意修改域名,证书路径和端口。

展开查看 nginx conf 配置

upstream bark {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name  bark.ioiox.com;
    return 301 https://bark.ioiox.com$request_uri;
}

server {
    listen 443 ssl;
    server_name  bark.ioiox.com;
    gzip on;

    ssl_certificate /usr/local/nginx/conf/ssl/ioiox.cer;
    ssl_certificate_key /usr/local/nginx/conf/ssl/ioiox.key;
    ssl_trusted_certificate /usr/local/nginx/conf/ssl/ioiox.cer;

    location / {
        proxy_redirect off;
        proxy_pass http://bark;

        proxy_set_header  Host                $http_host;
        proxy_set_header  X-Real-IP           $remote_addr;
        proxy_set_header  X-Forwarded-Ssl     on;
        proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto   $scheme;
        proxy_set_header  X-Frame-Options     SAMEORIGIN;

        client_max_body_size        100m;
        client_body_buffer_size     128k;
    }

    access_log /home/wwwlogs/bark.ioiox.com.access.log  main;
    error_log  /home/wwwlogs/bark.ioiox.com.error.log  warn;
}

常规使用

客户端

iOS 设备直接在 App Store 下载bark,打开后添加 bark 后端服务器地址。(实际上不添加也不影响使用,只是添加服务器端可以方便的在 app 里查看到各种推送地址方便复制使用。)同时也会看到本设备的一串key,请不要随意泄露此key,以免被别人滥用推送垃圾通知,如果泄露也可以通过删除 app 重新安装来更新。

bark 的常规命令

其实 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



更多关于自定义 icon、铃声、自动复制、自动保存、时效性、角标等等功能可以直接查看 iOS 端说明。

高级用法

常规在浏览器或者命令行推送对文字的空格,换行都是需要进行 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 和 group 等多个叠加

正常情况下 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 的程序员们应该不需要我来教了,直接查看文档即可。


结语

再次感谢作者Finb开发的这么好用的工具,可以加入他的 TG 群组讨论和咨询。

本站提供免费和付费的技术支持.你可以通过留言,邮件,TG群的方式来技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面

如果喜欢我的文章,觉得对你有帮助,请随意赞赏!