update push docs

This commit is contained in:
heavyrian2012
2022-09-23 21:48:01 +08:00
parent e6714d9e44
commit 53b8fa4b65
2 changed files with 39 additions and 17 deletions

View File

@@ -2,7 +2,7 @@
作为野火IM的推送服务的演示支持小米、华为、魅族、OPPO、Vivo、苹果apns和谷歌FCM。并且可以添加更多的推送厂商和自定义推送模式。
## 工作原理
推送功能对于所有IM来说都是非常重要的功能然而android系统又没有统一的推送服务,对接起来难度很大。另外一方面客户有不同对接需求,有的要求使用第三方,有的要求使用厂商推送,有的需要在海外添加谷歌推送,有的对推送的格式有不同的要求。
推送功能对于所有IM来说都是非常重要的功能然而手机系统又没有统一的推送服务,对接起来难度很大。另外一方面客户有不同对接需求,有的要求使用第三方,有的要求使用厂商推送,有的需要在海外添加谷歌推送,有的对推送的格式有不同的要求。
为了满足各种各样的需求提供足够好的灵活性野火IM把推送子系统独立出来客户只要理解了推送子系统运行的原理就能做好各种自定义处理。
![架构图](https://docs.wildfirechat.cn/architecture/wildfire_architecture.png)
@@ -13,7 +13,14 @@
2. SDK被调用setDeviceToken后会把推送token和类型传入到IM服务IM服务为对应手机保存下来以备后用。事实上IM服务不需要理解token和type的含义只需要透传给推送服务即可。
3. IM服务处理消息时发现用户不在线或者下发消息失败则会启动是否要推送的决策比如消息是否需要推送预制消息已经支持自定义消息需要传入push content用户是否全局静音会话是否被静音客户有多少天没有登录超过7天没登录就不推送。达到推送条件后跟把所有推送需要的内容打包发给推送服务。
4. 推送服务接收到IM服务的请求把推送数据放到消费队列中并立即返回IM服务不能被阻塞然后逐步处理推送事件。每个推送事件中都包含了所有需要处理的数据其中包括1步骤中的推送Token和类型然后根据类型来调用对用推送厂商的服务比如华为/小米/苹果/第三方厂商/谷歌/OPPO/Vivo等调用他们的SDK进行推送。
5. 系统厂商或第三方推送厂商利用他们的通道推送到客户端一般有2种形式一种是通知栏不激活应用只弹出通知栏另外一种形式是透传把应用激活并把数据传递到客户端的推送相关代码种应用激活后有一段活跃时间在这个活跃时间连接IM服务接收下来消息并弹出本地通知。
## 通知类型
一般情况下有2种推送一种是本地通知另外一种是远程推送。
1. 本地通知:指应用在后台处于激活状态,当有此用户的新消息时,消息会被收下来,然后本地弹出通知。
2. 远程推送:指应用处于冻结或者杀死状态,当有此用户的新消息时,消息无法被收下来,需要借助推送服务通知到用户。
本地通知和远程推送在手机上的表现很接近,都是应用放到后台,然后有人给此账号发送消息,通知栏弹出通知。实际上处理流程完全不同。本项目处理的是远程推送。***在处理通知问题时,首先要确认的是本地通知还是远程推送***。
## 接入推送
接入推送并不是简单得将推送服务跑起来即可,请详细阅读[接入推送流程](./push.md)