diff --git a/README.md b/README.md index b49d44e..39d9259 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ PushDeer是一个可以自行架设的无APP推送服务,同时也为因为某 [🐙🐱 GitHub仓库](https://github.com/easychen/pushdeer) [🔮 中国大陆镜像仓库@Gitee](https://gitee.com/easychen/pushdeer) +> [🤖 Android自架版求开发者参与](doc/Android%E7%89%88self-hosted%E7%9A%84%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%AE%9E%E7%8E%B0.md) + 本项目已经实现的方案/端包括: - 无APP方案: diff --git a/api/app/Http/Controllers/PushDeerMessageController.php b/api/app/Http/Controllers/PushDeerMessageController.php index 835b8f6..555ea21 100644 --- a/api/app/Http/Controllers/PushDeerMessageController.php +++ b/api/app/Http/Controllers/PushDeerMessageController.php @@ -98,6 +98,7 @@ class PushDeerMessageController extends Controller $result[] = make_post('http://mqtt/send', [ 'key' => env('MQTT_API_KEY'), 'content' => $the_message['text'], + 'payload' => json_encode($the_message), 'type' => $validated['type'] == 'image' ? 'bg_url' : 'text', 'topic' => $thekey, ], 3); diff --git a/doc/Android版self-hosted的设计和实现.md b/doc/Android版self-hosted的设计和实现.md index 7eac7d2..4e4f44c 100644 --- a/doc/Android版self-hosted的设计和实现.md +++ b/doc/Android版self-hosted的设计和实现.md @@ -1,10 +1,16 @@ +# 自架版当前状态 + +> 暂停开发,等待新开发者接手 + +由于之前负责Android版开发的同学忙于其他事情已退出开发,目前Android版需要新的同学参与,欢迎感兴趣的同学申请 easychen[A.T]gmail.com + # 问题 -小米推送不再对个人开放,自架系统的推送权限申请很麻烦。公开secret会对官方应用带来安全风险。 +小米推送不再对个人开放,自架系统的推送权限申请很麻烦,而公开secret会对官方应用带来安全风险。 # 解决思路 -采用websocket来实现自架版的推送。 +采用websocket/MQTT来实现自架版的推送。 优点: @@ -16,14 +22,10 @@ # 实现方案 -## 架构选型 +优先采用MQTT协议,因为PushDeer自架版Docker镜像本来就已经支持了MQTT Server( 可参考[此文档]配置 (https://github.com/easychen/pushdeer/tree/main/iot#%E5%BC%80%E5%90%AFmqtt%E6%9C%8D%E5%8A%A1) ),因此只需要在客户端实现即可。 -1. 暂定使用 socket.io V3 版本作为 websocket 的技术栈。 +以下是UI原型: +![](image/2022-03-30-18-14-05.png) -## 暂定流程 - -1. 在界面输入API endpoint时,以endpoint MD5值为Key查询本地存储获取之前(可能)存在的 device token,如不存在随机创建一个并写入到本地存储 -1. 在注册设备时,检测是否为自架模式,如是则读取endpoint对应的device token。 -1. 客户端以 device token 为 key 和服务器端的 socket 通信 -1. API在推送Android类型的message时,检测是API endpoint,如果发现是自架host(非*.pushdeer.com),则将信息发送到 socket server 对应的channel上 \ No newline at end of file +Android实现需要将MQTT启动为服务并常驻后台,可在顶栏显示一个常驻图标,点击后进入应用。 \ No newline at end of file diff --git a/doc/image/2022-03-30-18-14-05.png b/doc/image/2022-03-30-18-14-05.png new file mode 100644 index 0000000..44950d6 Binary files /dev/null and b/doc/image/2022-03-30-18-14-05.png differ