推送服务器,可以对接所有的系统厂商推送服务或者第三方推送服务。
dependabot[bot] b3c659589e Bump gson from 2.8.2 to 2.8.9 | %!s(int64=2) %!d(string=hai) anos | |
---|---|---|
apns | %!s(int64=5) %!d(string=hai) anos | |
config | %!s(int64=3) %!d(string=hai) anos | |
fcm | %!s(int64=3) %!d(string=hai) anos | |
src | %!s(int64=2) %!d(string=hai) anos | |
.gitignore | %!s(int64=3) %!d(string=hai) anos | |
LICENSE | %!s(int64=5) %!d(string=hai) anos | |
README.md | %!s(int64=2) %!d(string=hai) anos | |
mvnw | %!s(int64=6) %!d(string=hai) anos | |
mvnw.cmd | %!s(int64=6) %!d(string=hai) anos | |
pom.xml | %!s(int64=2) %!d(string=hai) anos |
作为野火IM的推送服务的演示,支持小米、华为、魅族、OPPO、Vivo、苹果apns和谷歌FCM。并且可以添加更多的推送厂商和自定义推送模式。
推送功能对于所有IM来说都是非常重要的功能,然而android系统又没有统一的推送服务,对接起来难度很大。另外一方面客户有不同对接需求,有的要求使用第三方,有的要求使用厂商推送,有的需要在海外添加谷歌推送,有的对推送的格式有不同的要求。
为了满足各种各样的需求,提供足够好的灵活性,野火IM把推送子系统独立出来,客户只要理解了推送子系统运行的原理,就能做好各种自定义处理。
如果架构图无法查看,可以点击这里查看
图中紫色部分为推送子系统,推送子系统的所有源码都是开源的,且可以随意修改。推送子系统的工作流程如下:
客户需要自行去厂商申请推送服务并替换配置文件中的各项参数。我们提供的默认参数是服务工作的,需要替换。不排除推送厂商sdk接口有变化,需要自行调试,如果发现我们demo有问题,欢迎给我们提PR。
mvn package
本演示服务有1个工程配置文件和7个推送配置文件在工程的config
目录下,请配置服务的端口和各个推送服务相关配置。如果有无法支持的推送类型,请修改客户端去掉不支持的类型(注意这里的配置文件要保留)。
请正确配置放到jar包所在的目录下的config
目录下。
苹果和谷歌推送需要证书,请把对应证书分别放到apns和fcm目录下,然后修改配置文件中的证书路径。 同样把apns和fcm目录放到jar包所在目录
在target
目录找到push-XXXX.jar
,把jar包和放置配置文件的config
目录放到一起,然后执行下面命令:
java -jar push-XXXXX.jar
修改IM服务的配置文件wildfirechat.conf
,指向推送服务器的地址,修改完后需要重启
#*********************************************************************
# Push server configuration
#*********************************************************************
##安卓推送服务器地址
push.android.server.address http://localhost:8085/android/push
##苹果推送服务器地址
push.ios.server.address http://localhost:8085/ios/push
Android客户端Push SDK是处理推送注册及接收的地方。这里是客户端进行推送对接的地方,有几点需要注意修改:
如果遇到问题请按照以下步骤排查:
Android推送服务有透传推送和通知栏推送两种推送方式,各个厂商的支持程度各异,一般情况下透传推送客户体验更好,但需要开通额外的权限比如自启动和后台等,需要用户进行设置;通知栏推送更简单,只弹出通知栏不拉起应用,但在音视频来电处理上赶不上透传,好处是不需要用户手动设置。我们提供的demo中使用的方式并不一定是最适合您的,还需要您根据实际情况来调整使用透传或通知栏。
由前面的介绍可以看出,推送子服务是独立于IM服务,而且客户端和服务器部分都是开源的,而且考虑到了扩展性,可以很容易地添加其它推送类型。具体步骤如下:
UNDER MIT LICENSE. 详情见LICENSE文件