
引言
最近在找一个能实时通知的消息的工具。想到了使用企业微信, 钉钉等办法申请一个key就可以实现。但个人的话还是有些困难。 突然发现了Bark这个神器,优点是
- 免费、轻量!简单调用接口即可给自己的iPhone发送推送。
- 依赖苹果APNs,及时、稳定、可靠
- 不会消耗设备的电量, 基于系统推送服务与推送扩展,APP本体并不需要运行。
- 隐私安全,可以通过一些方式确保包含作者本人在内的所有人都无法窃取你的隐私。
但是缺点就是只支持苹果, 不过实现起来超级简单且方便
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官方服务器,或自行搭建私有服务器。自建服务器提供更高的隐私保护和定制化设置。
1 2 3
| mkdir bark && cd bark curl -sL https://git.io/JvSRl > docker-compose.yaml docker-compose up -d
|
docker-compose.yaml(防止链接失效)
1 2 3 4 5 6 7 8 9 10
| version: '3.8' services: bark-server: image: finab/bark-server container_name: bark-server restart: always volumes: - ./data:/data ports: - "8080:8080"
|
测试是否部署成功
1
| curl http://0.0.0.0:8080/ping
|
响应
1
| {"code":200,"message":"pong","timestamp":1706457087}
|
看到这样的响应就是搭建成功了, 就可以正常使用了

Bark关联Server服务
然后在app中右上角添加服务器, 填入服务器地址和端口号
1
| http://xxx.xxx.xxx.xxx:8080
|
就OK了, 复制链接到浏览器进行测试, 同样可以接收到消息
优化BarkServer
还可以再优化一下, 给BarkServer服务配置一个域名(有条件的情况下)
在nginx中添加配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 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; } }
|
在腾讯云中配置二级域名, 以前写过, 就不再重复了(文末链接)
接下来同样的步骤, 将域名服务器列表中, 同样会生成一个新的密钥, 复制到浏览器进行测试
接下来我们将这个服务用起来,添加到实际应用中。封装一小小段代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| # -*- 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记录通知消息等等功能。
相关推荐
使用smtplib模块发送邮件
监控系统负载 cpu 内存
Nginx-添加并部署多个二级域名And添加SSL证书
Python 中的多种进度条实现方法