文档章节

第三方推送已死

Yunba
 Yunba
发布于 2016/11/02 18:08
字数 1168
阅读 180
收藏 2

国内第三方推送的起源

2010 年左右,Android 手机在国内迅速发展,Google 的原生推送(C2DM,现在的 GCM)由于种种原因不能正常使用,当时的 Android 开发者使用各种办法来解决这个问题,其中就包括 Android 手机厂商开发出自己的推送方案。

对于大部分开发者来说,除了做一个 App,还要独立开发一套推送系统是件异常困难的事情。哪怕是用户数量很大的 App ,这也不是一件容易的事情。于是在 2011 年底,我产生了做独立第三方推送服务的想法,也就有了后来的极光推送。

推送消息能送达的关键

这几年经常有业内的朋友探讨推送能否送达的关键因素。其实最重要的是 SDK 能否保活。

具体地说,有以下两方面:

SDK 如果不能及时地发起心跳,运营商网络的长连接会被断开。

SDK 的任务如果被杀掉了,不能被拉起,消息就完全没有机会下发。

参考之前的文章:《推送技术原理》 http://zhang.hu/mobile-push/

如果 SDK 端不能有效地保活,那么无论服务器端怎么优化,都不能保证消息及时地送达。

对 Android 手机厂商来说,这里有一个矛盾的问题。手机厂商都希望自己出产的手机能有尽量长的待机时间,但是 App 定时在后台启动、维持心跳的行为,会极大地影响手机待机时间。

因此,最近几年,手机厂商为了控制后台服务,持续地推出各种限制手段。比如之前的心跳对齐,也就是不允许 App 任意使用 RTC 后台唤醒手机。还有更严厉的手段,就是定时清理所有后台服务,并且不允许服务通过监听广播自动拉起。

第三方推送已死

正如前文所提到的,最近主流的 Android 手机都会清理后台服务,禁止服务自动拉起,以前各种 SDK 保活手段相继失效,这个问题从根本上动摇了 Android 第三方推送服务的基础,导致几乎所有的 Android 第三方推送服务都不能保证送达。

所以,如果推送服务商还在使用以往相互拉起的技术手段,那么我们可以断言,第三方推送已经在走向死亡。

面对这样的问题,App 开发者该如何应对?

更合理的方案

因为推送服务的特点,它最应该以系统原生服务的形态存在。在 iOS/Android 系统推出的早期,都考虑到了这个问题,iOS 有 APNs,Android 有 C2DM(GCM)。可惜的是,Android 的 GCM 在国内早已不能被有效使用,而 Android 方面没有试图解决这个问题,而把问题留给了手机厂商和 App 开发者。

考虑到推送服务的特点,我们自然而然就想到了通过厂商的推送通道来解决这个问题,就像在 iOS 上使用 APNs 一样。使用 App 内的消息通道发消息给 App,再通过厂商的推送通道唤醒 App,App 被打开后,接受消息通道的离线消息。

从目前的实践情况来看,这是解决后台进程被清理的最有效办法。

 推送机制

国内 Android 厂商推送通道现状

目前国内几个主要的 Android 厂商中,小米、华为 都有提供官方的推送服务。经过我们团队的验证,他们的推送服务在自己品牌的手机上,有相对稳定的送达率。目前表现最好的是小米,华为的推送延迟有时比较大,也不太稳定。

而另外的几家 OPPO、VIVO、金立 都没有官方的推送服务。

云巴近期推出了一键集成 小米、华为 推送的功能,方便开发者快速集成厂商的推送服务。但是对于没有提供推送服务的厂商,目前还没有特别好的办法。我们期待各主流手机厂商为了 App 有更好的体验,都能提供解决这个问题的方案。

文章作者:@Tiger_张虎 ,云巴 (yunba.io) 创始人,yunba.io 云端实时消息服务。 JPush 创始人,原CTO。 Oracle VM 创始团队成员。

© 著作权归作者所有

Yunba
粉丝 4
博文 15
码字总数 23885
作品 0
深圳
程序员
私信 提问
加载中

评论(3)

冰力
冰力
垃圾东西,标题党,最合理方案是谷歌解封!!
Yunba
Yunba 博主

引用来自“巴拉迪维”的评论

很早很早就知道小米和华为有自己的推送渠道。但问题是,为了实现安卓客户端的推送,我们要做:小米推送接入、华为推送接入。如果以后OPPO、VIVO也限制其他第三方后台服务,那么也同样接入他们的推送。如果这就是未来的发展趋势,我还真是要吐槽。看不出楼主所说的「更合理的方案」的方案,到底是处于什么角度考虑。

这个事情的正确的思路应该是:有一家底层推送服务(最好没有商业化,或者少量商业化),各个手机厂商都能很友好的对齐提供支持。开发者只需要接入这一套,就可以。
如果未来OPPO、VIVO也推出官方推送,那么对于开发者来说就要分别集成华为、小米、OPPO、VIVO甚至还有更多的比如,金立、锤子等等,这太麻烦了。

所以我们的思路就是,用云巴服务,集成所有的厂商推送,由于目前只有华为、小米是开放的,所以先集成这两家服务,后续再集成更多的。这一点来看,我们的想法有点一致😬

同时,我们的集成不是混合集成,而是一键集成。
巴拉迪维
巴拉迪维
很早很早就知道小米和华为有自己的推送渠道。但问题是,为了实现安卓客户端的推送,我们要做:小米推送接入、华为推送接入。如果以后OPPO、VIVO也限制其他第三方后台服务,那么也同样接入他们的推送。如果这就是未来的发展趋势,我还真是要吐槽。看不出楼主所说的「更合理的方案」的方案,到底是处于什么角度考虑。

这个事情的正确的思路应该是:有一家底层推送服务(最好没有商业化,或者少量商业化),各个手机厂商都能很友好的对齐提供支持。开发者只需要接入这一套,就可以。
小程序的出现为何能吸引这么多生活服务平台的入驻

同城生活小程序是由腾讯旗下张小龙团队研发的,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户早平常的生活中只要扫一扫或者搜一下即可打开应用。也体现了“用完...

金蜂广告
2018/08/18
0
0
个推技术实现原理介绍

概述 PUSH是互联网上内容提供者和内容定制方之间的一种通信机制,利用在服务器端的程序把数据源源不断地推向客户端,大大提高客户机和服务器之间的交互性能。 传统互联网上数据交互一般有pul...

个推
2015/04/08
1K
1
Android 消息推送:第三方消息推送平台 详细解析

前言 消息推送在 开发中应用的场景是越来越多了,比如说电商产品进行活动宣传、资讯类产品进行新闻推送等等,如下图: 推送消息截图 本文将介绍 中实现消息推送的第三方推送的详细解决方案 ...

Carson_Ho
2017/05/22
0
0
云巴更新日志No.5|第三方推送功能正式上线

第三方推送功能正式上线 现在 Android 5.0 及以上平台应用进入后台会被杀死,导致出现用户收不到 App 消息推送的问题。因此,过往第三方推送最头疼的问题就是到达率低、用户收不到推送,使得...

Yunba
2016/09/30
185
0
【五元感谢】关于app推送 新人新问题

问下,小弟刚做app。 有ios和安卓,不懂推送。 第三方好多推送,现在有2个问题: 1:是否用一个第三方的产品,如极光推送,就可以在ios和安卓用这一套就可以了 2:目前哪个推送产品,比较简单...

kkk111112
2018/04/25
100
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部