pushdeer/doc/Android版self-hosted的设计和实现.md
2022-02-06 10:46:39 +08:00

29 lines
1.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 问题
小米推送不再对个人开放自架系统的推送权限申请很麻烦。公开secret会对官方应用带来安全风险。
# 解决思路
采用websocket来实现自架版的推送。
优点:
- 不受推送服务商限制,可以按自己需求随意推送
缺点:
- 无法实现后台推送应用必须常驻后台。但考虑到MiPush在非小米系手机上也有同样的问题也不是不能接受。
# 实现方案
## 架构选型
1. 暂定使用 socket.io V3 版本作为 websocket 的技术栈。
## 暂定流程
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上