搭建 iOS 平台的个人通知推送服务

Bark 是一款可以给 iOS 系统推送自定义通知的开源应用,用户可以通过 HTTP 接口向自己的手机或者 iOS 设备推送消息。应用内置了公共服务器,软件作者也提供了开源的服务端用于搭建个人推送服务器。此外,还可以通过 Chrome 浏览器扩展来调用推送接口。

部署服务端

应用内置了公共服务器,如果你没有隐私方面的需求,可以直接使用公共服务器进行推送。但是为了稳定性和私密性,建议自己搭建服务器。

服务端使用 Go 语言编写,可以直接下载并运行编译好的二进制可执行文件,无需配置。此处以 CentOS 7 x86_64 系统为例讲解如何部署服务端。

下载

从 GitHub 上下载对应平台的二进制可执行文件:https://github.com/Finb/bark-server/releases 。此处应选择 bark-server_linux_amd64 版本。

shellwget https://github.com/Finb/bark-server/releases/download/v2.0.2/bark-server_linux_amd64
chmod +x bark-server_linux_amd64
mv ./bark-server_linux_amd64 /usr/local/bin/bark-server

注意:本文例子中的命令皆在 root 权限下运行。部署时请自行解决权限问题。

安装服务

新建用于保存 Bark 数据的目录:

shellmkdir /var/local/bark
chmod +w /var/local/bark

新建服务配置文件:

shellnano /etc/systemd/system/bark.service

写入如下内容:

ini[Unit]
Description=Bark Service
After=network.target
Wants=network.target

[Service]
Type=simple
PIDFile=/run/bark.pid
ExecStart=/usr/local/bin/bark-server -user admin -password 123456 -addr 127.0.0.1:8000 -data /var/local/bark
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

本例中 Bark 服务器运行在 8000 端口,你也可以改成其他端口。-user-password 参数用于设置 HTTP 接口的访问用户名和密码。如果设置了该组参数,除了 /ping/register/healthz 三个接口之外,都需要提供 HTTP Basic Auth 认证。此处用户名设为 admin,密码 123456,请自行修改。

执行命令载入配置并启动服务:

shellsystemctl daemon-reload
systemctl start bark

查看服务是否正确运行:

shellnetstat -anp|grep 8000

如果显示:

tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      32459/bark-server

则表示服务成功运行。

配置 Nginx

如果没有安装 nginx,请先安装:

shellyum install -y nginx

新建配置文件:

shellnano /etc/nginx/sites-available/bark.my.site

写入如下内容:

nginxserver {
    listen 80;
    listen [::]:80;
    server_name bark.my.site;

    location / {
        proxy_pass                         http://127.0.0.1:8000;
        proxy_read_timeout                 300;
        proxy_connect_timeout              300;
        proxy_redirect                     off;
        proxy_set_header Host              $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP         $remote_addr;
    }
}

其中 bark.my.site 是你的个人域名,你也可以直接使用 IP 地址。http://127.0.0.1:8000 是 Bark 运行服务的 URL。

使配置生效:

shellln -s /etc/nginx/sites-available/bark.my.site /etc/nginx/sites-enabled/bark.my.site
systemctl restart nginx

安装手机应用

作者已经将编译好的手机应用发布到了 App Store。可以在 App Store 上搜索“Bark”进行安装,也可以通过下面的链接进行安装:

https://apps.apple.com/cn/app/bark-customed-notifications/id1403753865

安装完毕后打开 APP,点击应用右上角 + 按钮,输入之前配置的服务端地址:http://bark.my.site

服务器配置完毕后,你可以在「服务器」页面看到形如 http://bark.my.site/XXxxXXxxXXxxXX/这里改成你自己的推送内容 的推送接口列表。其中 XXxxXXxxXXxxXX 就是你的设备代码。每次添加服务器,都会生成新的设备代码。

调用接口

shell curl --basic -u admin:123456 http://bark.my.site/{device_code}/测试消息

将命令中 admin:123456 改成之前设置的 {用户名}:{密码}{device_code} 改成你的设备代码。测试成功的话,你的手机就能收到一条内容为「测试消息」的推送。