摘要
想要在自己的手机上能够以系统级别的通知形式第一时间收到通知、提醒消息,在ios上已经有非常不错的方案,那就是Bark这款App,可以使用官方的服务、也是免费的,如果是比较注重隐私,也可以下载官方的服务器代码自建服务器。
那么安卓系统有没有这类软件和服务呢?众所周知,安卓不同手机厂商都有不同的Push服务,有不同的消息推送SDK,因此适配起来很是麻烦,但目前仍然有一款开源的软件还是可以的 - Gotify(https://gotify.net/)
本次给大家写一写,Gotify的服务端搭建与客户端的配置。
Gotify 是什么
Gotify 是一套 自托管推送通知系统,由两部分组成:Gotify Server:服务端,负责接收消息并分发,Gotify Client(Android / Web):客户端,负责实时接收并展示通知。
核心优势:
- 开源、可自建、无第三方依赖
- HTTP API,任何语言都能推送
- Android 系统级通知(支持优先级)
- 支持 Docker,一行命令即可部署
服务器搭建
现在宝塔面板已经有Docker应用直接下载,需在目前比较新的宝塔面板上才有。
进入宝塔面板的Docker直接搜就可以下载安装。
安装完就可以启动了,启动后会在你当前服务器的IP地址开启一个后台,这个后台服务是有一个端口的,这个端口你需要前往服务器的防火墙加入,不然一直进不去的,记得这很重要。
点击详情,就可以看到后台账号密码。
登录进去先不管了,先去下载APP
下载客户端
下载地址:https://github.com/gotify/android/releases/tag/v2.9.0
这个是开源地址,国内下载比较慢。
国内地址:https://likeyun.lanzout.com/iNEw53fn5fif
下载安装后打开客户端,然后登录。
登录的时候,输入的就是你上面搭建好的服务器ip地址和端口号。
账号密码也是点击详情获取到的。
点击登录后会让你创建一个设备名称。
确定后就登录进去了。
然后去后台就可以看到新设备加入了。
推送消息的代码
先在后台创建一个应用Token
我这里创建一个名为测试的应用,Default Priority是默认优先级的意思,数字大一些优先级高。
创建后,复制这个Token等会有用。
上代码
<?php
header('Content-Type: application/json; charset=utf-8');
$url = 'http://IP地址:端口号/message?token=刚才复制的Token';
$title = isset($_GET['title']) ? trim($_GET['title']) : '通知';
$message = isset($_GET['message']) ? trim($_GET['message']) : '';
if ($message === '') {
echo json_encode(['code'=>400,'msg'=>'请输入内容']);
exit;
}
$data = [
'title' => $title,
'message' => $message,
'priority' => 6
];
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5
]);
$res = curl_exec($ch);
$err = curl_error($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($err) {
echo json_encode(['code'=>500,'msg'=>$err]);
exit;
}
echo json_encode([
'code' => $http,
'res' => json_decode($res)
]);复制以上代码,去你已经解析好域名的一个目录下,创建一个文件,名字自己取,例如send.php
然后代码粘贴进去并保存,修改代码里面的ip地址和端口号就是你刚才创建的gotify服务器的,Token也是上一步让你复制的那个,保存就行。
下面开始测试消息的推送。
http://域名/目录/send.php?title=推送标题&message=这是内容666访问这个代码所在的路径后,即可触发推送。
正常来说就会马上弹出消息了,如果不弹出来,那么一般都是手机的通知设置问题。
我的是红米K90,只需要长按图标即可进入设置通知。
开启前后对比,把所有有利于你第一时间看到最明显的通知的项打开。
其他手机自行研究。
适用场景
前期只需要搭建好服务器即可。
http://域名/目录/send.php?title=推送标题&message=这是内容666这个链接可以嵌入很多场景,例如:
- 服务器的后端任意页面,用于监控某个状态的变化进行通知;
- 宝塔面板定时任务执行到自己的目的的时候发送通知;
- 服务器运维告警通知;
- 抢票软件抢票结果;
- 短信转发器推送通道配置;
本文作者
TANKING
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。