默认

喜马拉雅亿级用户量的离线消息推送系统架构设计实践

查看数: 112258 | 评论数: 6 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-07-12 11:32

正文摘要:

本文由喜马拉雅技术团队李乾坤原创,原题《推送系统实践》,感谢作者的无私分享。 1、引言 1.1什么是离线消息推送 对于IM的开发者来说,离线消息推送是再熟悉不过的需求了,比如下图就是典型的IM离线消息通知效果 ...

评论

JackJiang 发表于 3 年前
引用:椎锋陷陈 发表于 2021-08-28 10:28
确实,这是面对现在的Android生态无奈的选择,但对一个IM应用来说,消息的可达性是最需要保障的点,权衡 ...

3个方案都集成了,那就放心多了
椎锋陷陈 发表于 3 年前
引用:JackJiang 发表于 2021-08-28 10:25
你厉害,这3种方式都集成在一个app里的话,光这一块引用的sdk库就很大了吧

确实,这是面对现在的Android生态无奈的选择,但对一个IM应用来说,消息的可达性是最需要保障的点,权衡之下还是得这么做。
JackJiang 发表于 3 年前
引用:椎锋陷陈 发表于 2021-08-28 10:17
作为一名曾经接触过IM开发的Android开发者,我想说各种方式的推送我们都尝试过,这里以一个客户端开发人员 ...

你厉害,这3种方式都集成在一个app里的话,光这一块引用的sdk库就很大了吧
椎锋陷陈 发表于 3 年前
作为一名曾经接触过IM开发的Android开发者,我想说各种方式的推送我们都尝试过,这里以一个客户端开发人员的角度讲一下各种方式的优劣:

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

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

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

为了最大限度提高推送的到达率和及时率,以上三种方式其实我们都集成了。
JackJiang 发表于 3 年前
引用:a835029688 发表于 2021-07-13 10:36
您好。您在文中提到
国内的几大厂商(小米、华为、魅族、OPPO、vivo等)都有自己官方的推送通道,但是每一 ...

1、他们都提供了自已的sdk,通过sdk集成;
2、你看看这个:https://dev.mi.com/console/appservice/push.html
3、厂商的sdk里是有机制可以自动做到的,你着重看一下华为和小米
a835029688 发表于 3 年前
您好。您在文中提到
国内的几大厂商(小米、华为、魅族、OPPO、vivo等)都有自己官方的推送通道,但是每一家接口都不一样,所以一些厂商比如小米、个推提供集成接口。发送时推送系统发给集成商,然后集成商根据具体的设备,发给具体的厂商推送通道,最终发给用户。

因为没有场景实践,有一些不懂的地方。
1.这些推送的通道是通过什么方式集成的呢?
2.小米的这个推送,有没有地方可以自行测试呢?
3.一个app如何知道是哪一种方式推送,然后接收对应的消息呢?
问题有点白痴,希望您可以解答。或者给我一个可以测试这个流程的地方,谢谢了。

返回顶部