头图

摘要

想要在自己的手机上能够以系统级别的通知形式第一时间收到通知、提醒消息,在ios上已经有非常不错的方案,那就是Bark这款App,可以使用官方的服务、也是免费的,如果是比较注重隐私,也可以下载官方的服务器代码自建服务器。

那么安卓系统有没有这类软件和服务呢?众所周知,安卓不同手机厂商都有不同的Push服务,有不同的消息推送SDK,因此适配起来很是麻烦,但目前仍然有一款开源的软件还是可以的 - Gotifyhttps://gotify.net/

本次给大家写一写,Gotify的服务端搭建与客户端的配置。

Gotify 是什么

Gotify 是一套 自托管推送通知系统,由两部分组成:Gotify Server:服务端,负责接收消息并分发,Gotify Client(Android / Web):客户端,负责实时接收并展示通知。

核心优势:

  • 开源、可自建、无第三方依赖
  • HTTP API,任何语言都能推送
  • Android 系统级通知(支持优先级)
  • 支持 Docker,一行命令即可部署

服务器搭建

现在宝塔面板已经有Docker应用直接下载,需在目前比较新的宝塔面板上才有。

image.png

进入宝塔面板的Docker直接搜就可以下载安装。

image.png

安装完就可以启动了,启动后会在你当前服务器的IP地址开启一个后台,这个后台服务是有一个端口的,这个端口你需要前往服务器的防火墙加入,不然一直进不去的,记得这很重要。

点击详情,就可以看到后台账号密码。

image.png
image.png

登录进去先不管了,先去下载APP

下载客户端

下载地址:https://github.com/gotify/android/releases/tag/v2.9.0

这个是开源地址,国内下载比较慢。

国内地址:https://likeyun.lanzout.com/iNEw53fn5fif

下载安装后打开客户端,然后登录。

登录的时候,输入的就是你上面搭建好的服务器ip地址和端口号。

image.png

账号密码也是点击详情获取到的。

点击登录后会让你创建一个设备名称。

image.png

确定后就登录进去了。

然后去后台就可以看到新设备加入了。

image.png

推送消息的代码

先在后台创建一个应用Token

image.png

我这里创建一个名为测试的应用,Default Priority是默认优先级的意思,数字大一些优先级高。

image.png

创建后,复制这个Token等会有用。

image.png

上代码

<?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

访问这个代码所在的路径后,即可触发推送。

image.png
image.png

正常来说就会马上弹出消息了,如果不弹出来,那么一般都是手机的通知设置问题。

我的是红米K90,只需要长按图标即可进入设置通知。

image.png
image.png

开启前后对比,把所有有利于你第一时间看到最明显的通知的项打开。

image.png

其他手机自行研究。

适用场景

前期只需要搭建好服务器即可。

http://域名/目录/send.php?title=推送标题&message=这是内容666

这个链接可以嵌入很多场景,例如:

  • 服务器的后端任意页面,用于监控某个状态的变化进行通知;
  • 宝塔面板定时任务执行到自己的目的的时候发送通知;
  • 服务器运维告警通知;
  • 抢票软件抢票结果;
  • 短信转发器推送通道配置;

本文作者

TANKING


TANKING
4.9k 声望596 粉丝

热爱分享,热爱创作,热爱研究。