引言
最近在找一个能实时通知的消息的工具。想到了使用企业微信, 钉钉等办法申请一个key就可以实现。但个人的话还是有些困难。 突然发现了Bark这个神器,优点是
但是缺点就是只支持苹果, 不过实现起来超级简单且方便
Bark官网 https://bark.day.app/#/?id=bark
Bark安装
安装超级简单, 直接打开App Store -> 搜索 Bark
https://apps.apple.com/us/app/bark-customed-notifications/id1403753865 apple.com
测试
第一次打开页面什么也没有, 点击页面的注册设备, 会为设备随机分配一个密钥。创建后就长这个样子,第一次打开是开发者自己的服务器(api.day.app), 这是搭建的私有化地址, 下面会介绍如何搭建
复制一个链接, 在浏览器打开后, 就可以看到效果了, 在手机就能接到通知的内容
到这里就可以实现在项目中出现问题时, 实时通知开发者的功能了。如果没有其它要求就可以不往下看了
Bark Server部署
Bark Server是Bark的服务端组件。用户可以选择使用Bark官方服务器,或自行搭建私有服务器。自建服务器提供更高的隐私保护和定制化设置。
mkdir bark && cd bark
curl -sL https://git.io/JvSRl > docker-compose.yaml
docker-compose up -d
docker-compose.yaml(防止链接失效)
version: '3.8'
services:
bark-server:
image: finab/bark-server
container_name: bark-server
restart: always
volumes:
- ./data:/data
ports:
- "8080:8080"
测试是否部署成功
curl http://0.0.0.0:8080/ping
响应
{"code":200,"message":"pong","timestamp":1706457087}
看到这样的响应就是搭建成功了, 就可以正常使用了
Bark关联Server服务
然后在app中右上角添加服务器, 填入服务器地址和端口号
http://xxx.xxx.xxx.xxx:8080
就OK了, 复制链接到浏览器进行测试, 同样可以接收到消息
优化BarkServer
还可以再优化一下, 给BarkServer服务配置一个域名(有条件的情况下)
在nginx中添加配置
server
{
listen 80 http2;
listen 443 ssl http2;
server_name xxxx.mehaei.com;
ssl_certificate /www/xxxx.pem;
ssl_certificate_key /www/xxxxx.key;
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
在腾讯云中配置二级域名, 以前写过, 就不再重复了(文末链接)
接下来同样的步骤, 将域名服务器列表中, 同样会生成一个新的密钥, 复制到浏览器进行测试
接下来我们将这个服务用起来,添加到实际应用中。封装一小小段代码
# -*- coding: utf-8 -*-
# @Author: Mehaei
# @Date: 2024-01-29 00:02:06
# @Last Modified by: Mehaei
# @Last Modified time: 2024-01-29 00:10:18
import requests
import time
import logging
def notice(title, message):
"""
:param title: message title
:param message: notice message info
"""
"""
URL: 服务器的地址. https://xxxx.mehaei.com
TOKEN: Bark生成的密钥
"""
url = f"{URL}/{TOKEN}/{title}/{message}"
for num in range(100):
try:
result = requests.get(url)
logging.info(f"推送消息成功")
logging.info(result)
return True
except Exception as e:
logging.info(f"第{num}次推送消息失败:{str(e)}")
time.sleep(2)
if __name__ == "__main__":
notice("TEST", "HeiHeiHei")
总结
Bark Server为iOS用户提供了一个强大且灵活的通知系统。通过自建服务器,就可以享受更为安全和个性化的通知服务。Bark还支持多种参数,实现分组、自动复制、等级等功能, 还可以实现打开其它app记录通知消息等等功能。