默认
打赏 发表评论 7
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
作为一名曾经接触过IM开发的Android开发者,我想说各种方式的推送我们都尝试过,这里以一个客户端开发人员的角度讲一下各种方式的优劣:

自建长连接通道
自己与服务端建立并维护长连接,需要自己设计开发连接建立、心跳机制、重连机制、消息队列、数据传输解析等功能。
优点是当长连接正常时消息最及时,消息解析的灵活度也最高。
缺点就是实现难度最大,要应对网络、电量、内存等变化对于长连接维持的影响。

集成厂商推送通道SDK
直接对接各个厂商提供的推送通道SDK,缺点自然是每个厂商推送通道SDK的API都不同,集成步骤较为繁琐。
优点是消息到达率最高,对透传类型的消息支持也更好。

集成第三方推送平台SDK
原理是由第三方推送平台SDK自建的长连接通道来维持消息的收发,成功率取决于设备中集成该平台SDK的APP数量。
平台SDK会选择依赖于当前正在运行或存活几率较高的APP建立长连接,并为其他集成该平台SDK的APP提供推送代理。
同时也会与厂商有合作,当自建的长连接通道不可行时就会转由厂商通道推送。
优点就是集成步骤较简单,只需要对接第三方推送平台SDK的API即可。
缺点就是对于透传类型的消息支持较差,通知栏类型消息的消息到达率就比较高。

为了最大限度提高推送的到达率和及时率,以上三种方式其实我们都集成了。
评论 7
引用:JackJiang 发表于 2021-08-28 10:25
你厉害,这3种方式都集成在一个app里的话,光这一块引用的sdk库就很大了吧

确实,这是面对现在的Android生态无奈的选择,但对一个IM应用来说,消息的可达性是最需要保障的点,权衡之下还是得这么做。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部