Featured image of post 用Gotify自建安卓消息推送通知服务,和iOS的Bark一样的效果

用Gotify自建安卓消息推送通知服务,和iOS的Bark一样的效果

使用Gotify自建安卓消息推送服务,实现类似iOS Bark的系统级通知效果

摘要

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

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

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

Gotify Logo

Gotify 是什么

Gotify 是一套自托管推送通知系统,由两部分组成:

  • Gotify Server:服务端,负责接收消息并分发
  • Gotify Client(Android / Web):客户端,负责实时接收并展示通知

核心优势:

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

服务器搭建

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

宝塔面板Docker

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

搜索Gotify

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

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

查看详情

后台账号密码

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

下载客户端

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

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

客户端登录界面

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

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

创建设备名称

确定后就登录进去了。

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

后台设备列表

推送消息的代码

先在后台创建一个应用 Token

创建应用Token

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

创建测试应用

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

复制Token

PHP 推送代码

 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
35
36
37
38
39
40
41
<?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 也是上一步让你复制的那个,保存就行。

测试推送

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

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

推送测试

收到通知

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

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

长按图标

通知设置

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

通知设置对比

其他手机自行研究。

适用场景

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

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

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

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

总结

Gotify 是一款非常优秀的自建消息推送服务,特别适合注重隐私的用户。通过简单的配置,就可以实现安卓系统级别的通知推送,效果堪比 iOS 的 Bark。

如果你在使用过程中有任何问题,欢迎在评论区留言讨论!