Android我还能够相信你多少系列文章一之推送

我即将在2017.7.8号开一个直播讲堂,感兴趣的同窗点击快来参加吧:https://segmentfault.com/l/15...
内容包括:android

  1. Android 知识体系分享面试

  2. 从入门到提升的学习路径segmentfault

  3. 如何进一步突破瓶颈,进一步提高服务器

  4. 充足的时间和你们讨论,回答你们问题微信

自我介绍:框架

网易 Android 专家工程师,网易云音乐 Android 负责人,主导从零开发了网易云音乐 Android
客户端,目前是杭州研究院专业委员会成员,负责每一年的评级,规范起草,面试招聘等相关工做。参与并制做了网易云课堂 Android
微专业相关课程,反响不错。学习

第一篇文章咱们先来聊聊“Android我还能够相信你多少”,在Android系统版本的碎片化之下,在国内百家争鸣的厂家定制rom修改之下,做为一个开发者在选用系统组件的时候应该如何抉择?google

每当想起这个话题的时候,老是略带一些沮丧。系统的组件都不靠谱,倒逼着开发者重复造轮子,浪费时间是其一,参差不齐的实现和激烈的资源竞争都是致使Android平台App质量不高的缘由之一。不过这倒催生了一系列优秀的开源项目,只要你想获得基本上均可以在开源平台上面搜获得。队列

首当其冲的应该算推送。推送做为拉回流失,提升活跃的重要手段基本上每一个App都是标配。但无奈GCM依赖google服务框架,国内手机系统基本都被阉割,直接致使官方系统级推送服务扑街。因而演变出了不少变种,每一个厂家自研一套,好比小米,华为都是对外公开。有的厂家是有自建推送到未普及到普通应用开发者,好比 oppo,vivo。小众一点厂家可能都尚未实现。除了厂家实现的系统级推送,也有不少第三方软件公司实现的方案,好比个推,极光。甚至还有像友盟这种的打包方案:会根据手机品牌来进行适配优先选择系统级推送,并以其余推送做为辅助来提升消息到达率。这种作法在实现推送服务的时候很常见,不少App都会接入不止一个推送SDK,所作的一切就是为了尽量的提升消息到达率。资源

除了推送,定时轮询也算是另一种解决方案,适合实时性要去不高接入推送成本又偏高的应用

事实上由于没有统一的推送平台,只靠接入一家推送服务都没法在如今的国内环境下面保证到达率。随着厂家对功耗限制的愈来愈严格,程序在后台存活的几率愈来愈小,要是利用不了系统级推送服务被杀以后基本没有机会。因而乎又衍生出了另一种唤醒服务,也即接入某种推送平台的SDK以后,一个程序启动了就会拉起另一个程序运行,这样即便没有系统级服务也能够继续收发消息。但道高一尺魔高一丈,厂家发现这种行为后纷纷亮出大招,好比禁止使用startService唤起一个死掉的程序,同时还在通知栏来个提醒:已禁止A程序后台启动B程序。开发者被逼上了绝路。关于唤醒还有另一种变种,就是消息通道复用,也即A程序起来以后也能够代收一样使用这个推送平台的其余程序,这样就不存在唤醒但同时能够收发更多程序消息。这种实现系统很难禁止,惟一的缺点就是流量功耗都会算到A程序上面,或许推送开发者又要进行一轮修改了。

一个App保持了不少条长连接,App之间反复被唤醒,轮询频率过快都是致使手机变卡,耗电严重的重要缘由。

推送服务选择的原则最重要的就是要选有系统级推送且市场占有率大的厂家。根据咱们的经验同时接入小米和华为,在华为手机上面走华为推送,在其余手机上面走小米推送。oppo,vivo市场占有率很高,但无奈推送服务还不成熟,据小道消息还要在通知栏上面作竞价排名?小米推送比较成熟,服务器也比较稳定,接入也很简单,华为推送由于某些旧版本系统存在bug致使到达率会有一些损失。个推听说留有后门能够动态执行。在推送实现上面也能够采用几个推送平台服务端同时下发,客户端进行过滤去重的实现。能够根据本身须要来进行选择。

还要警戒的是,接入推送以后有可能存在消息延迟,这彻底依赖于推送服务提供商的后台服务。消息从咱们服务器发到推送平台以后进入处理队列,最后真正推到客户端的时间是不肯定的,因此客户端要尽可能有延迟容忍能力。话说回来,除了个别推送(好比个推),其余都是免费提供服务,你还能要求咋样?

更多推送平台的对比网上也有不少参考文章,你们能够搜索:android推送对比 进行查看,这里有篇对比文章可供参考:http://www.jianshu.com/p/d650...

更多文章请关注微信公众号:anzhuozhimei

相关文章
相关标签/搜索