Skip to content

Commit

Permalink
update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
imhao183 committed Mar 12, 2021
1 parent b13e04d commit e9f2103
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# 野火IM 推送服务
作为野火IM的推送服务的演示,支持小米、华为、魅族和苹果apns。并且可以添加更多的推送厂商和自定义推送模式。
作为野火IM的推送服务的演示,支持小米、华为、魅族、OPPO、Vivo、苹果apns和谷歌FCM。并且可以添加更多的推送厂商和自定义推送模式。

#### 工作原理
推送功能对于所有IM来说都是非常重要的功能,然而android系统又没有统一的推送服务,对接起来难度很大。另外一方面客户有不同对接需求,有的要求使用第三方,有的要求使用厂商推送,有的需要在海外添加谷歌推送,有的对推送的格式有不同的要求。
Expand All @@ -9,10 +9,10 @@
> 如果架构图无法查看,可以点击[这里](https://docs.wildfirechat.cn/architecture/wildfire_architecture.png)查看
图中紫色部分为推送子系统,推送子系统的所有源码都是开源的,且可以随意修改。推送子系统的工作流程如下:
1. 应用启动后,推送SDK初始化,判断采用那种推送服务,比如华为手机就用华为推送,小米手机就用小米推送,或者全部或部分使用第三方推送。如果客户要加谷歌推送也是在这里添加。选定好推送厂商后,就初始化对应推送厂商的SDK,注册成功后会得到推送token,调用IM SDK的setDeviceToken,传入推送token和类型。注意类型是可以扩展的,而且对IM系统没有任何影响的。
1. 应用启动后,推送SDK初始化,判断采用那种推送服务,比如华为手机就用华为推送,小米手机就用小米推送,或者全部或部分使用第三方推送。如果客户要加其它推送也是在这里加。选定好推送厂商后,就初始化对应推送厂商的SDK,注册成功后会得到推送token,调用IM SDK的setDeviceToken,传入推送token和类型。注意类型是可以扩展的,而且对IM系统没有任何影响的。
2. SDK被调用setDeviceToken后,会把推送token和类型传入到IM服务,IM服务为对应手机保存下来以备后用。事实上IM服务不需要理解token和type的含义,只需要透传给推送服务即可。
3. IM服务处理消息时发现用户不在线或者下发消息失败,则会启动是否要推送的决策,比如消息是否需要推送(预制消息已经支持,自定义消息需要传入push content),用户是否全局静音,会话是否被静音,客户有多少天没有登录(超过7天没登录就不推送)。达到推送条件后,跟把所有推送需要的内容打包发给推送服务。
4. 推送服务接收到IM服务的请求,把推送数据放到消费队列中并立即返回(IM服务不能被阻塞),然后逐步处理推送事件。每个推送事件中都包含了所有需要处理的数据,其中包括1步骤中的推送Token和类型,然后根据类型来调用对用推送厂商的服务,比如华为/小米/苹果/第三方厂商/谷歌,调用他们的SDK进行推送。
4. 推送服务接收到IM服务的请求,把推送数据放到消费队列中并立即返回(IM服务不能被阻塞),然后逐步处理推送事件。每个推送事件中都包含了所有需要处理的数据,其中包括1步骤中的推送Token和类型,然后根据类型来调用对用推送厂商的服务,比如华为/小米/苹果/第三方厂商/谷歌/OPPO/Vivo等,调用他们的SDK进行推送。


#### 申请推送服务
Expand All @@ -24,10 +24,12 @@ mvn package
```

#### 修改配置
本演示服务有5个配置文件在工程的```config```目录下,分别是```application.properties```, ```apns.properties```, ```meizu.properties```, ```hms.properties``````xiaomi.properties```
分别配置服务的端口和相关推送的配置。
本演示服务有1个工程配置文件和7个推送配置文件在工程的```config```目录下,请配置服务的端口和各个推送服务相关配置。如果有无法支持的推送类型,请修改客户端去掉不支持的类型(注意这里的配置文件要保留)。
请正确配置放到jar包所在的目录下的```config```目录下。

#### 证书
苹果和谷歌推送需要证书,请把对应证书分别放到apns和fcm目录下,然后修改配置文件中的证书路径。
同样把apns和fcm目录放到jar包所在目录

#### 运行
```target```目录找到```push-XXXX.jar```,把jar包和放置配置文件的```config```目录放到一起,然后执行下面命令:
Expand All @@ -47,6 +49,11 @@ push.android.server.address http://localhost:8085/android/push
push.ios.server.address http://localhost:8085/ios/push
```

#### Android客户端的修改
Android客户端Push SDK是处理推送注册及接收的地方。这里是客户端进行推送对接的地方,有几点需要注意修改:
1. 选取您期望的推送,默认是加上了常见推送SDK,但实际上都会有各种原因只能选取部分,需要屏蔽掉您不需要的推送类型。
2. 如果支持FCM,需要判断是选取FCM还是国内推送厂商的问题。我们处理比较简单,如果你们能够更精准的判断,需要加上你们自己的判断。

#### 问题排查
如果遇到问题请按照以下步骤排查:
1. 确认客户端推送SDK是否正确的获取到token,是否调用了setDeviceToken,token和type是多少?
Expand Down

0 comments on commit e9f2103

Please sign in to comment.