推送原理以及提高推送到达率的方案介绍

何为推送?
何为推送?去百度了一番,本想找个官方定义,奈何没有相中的 。最后自己总结了一下:服务器将信息定向的发送到手机端,并通过通知栏(包括自定义)的形式,展示给用户的技术 。不一定准,就是这个意思,大家都懂得 。
先推一波广告吧,自己搞的试水小程序,个税计数器,感兴趣的同学可以试试:
相信做app的同学,一定会涉及到过push的接入,无论iOS还是 。今天就和大家聊聊推送的原理,以及我们在提高到达率上,做的那些内容 。
下面一张图,就是推送的大致流程:
推送有哪些?
iOS同学很幸福,由于苹果的政策,不需要考虑那么多,苹果已经提供了官方的推送服务:APNS 。
相对的,苦逼的安卓同学就没那么好运了 。先看看安卓的推送服务:
可以看到,安卓是百家争鸣,百花齐放的现象 。
推送原理
虽然推送服务很多,但是原理还是比较简单相似的,我们已APNS为例,其原理大致如下:
安卓的推送原理与APNS并无本质的不同,都是通过长连接进行消息传递,所以这里不再重复讲解 。虽然原理不同,但是差别还是很大的,具体差别如下:
iOS
推送服务商
苹果一家,三方sdk也是集成apns
百家争艳
推送服务保持
系统保持
手机厂商自家的推送,是系统级别的服务,其他推送,生命周期和app生命周期一致
推送到达率

推送原理以及提高推送到达率的方案介绍

文章插图
手机厂商的推送到达高,其他的到达率低
可以看到,iOS开发同学并不需要关注到达率问题,因为苹果官方帮你做了,但是,就必须关注了 。如何处理app的push,直接影响你的到达率 。
如何提高到达率?
如何提高到达率是大家最关心的问题 。这里主要介绍的是安卓,并且只介绍一些方法,具体实现,还请自行百度或者code 。
【推送原理以及提高推送到达率的方案介绍】1、守护进程
何为守护进程?请看下图:
原理:双进程轮询检测对方状态,发现对方被回收,即重新启动对方进程,达到守护状态;
如何设置守护进程?这里给大家提个思路;
安卓的进程回收机制相信大家了解:
1.前台进程
a.该进程有用户正在交互的,即调用过()的
b.该进程有绑定到正在交互的的 。(可以绑定到,待研究,可能类似于 play服务的支付界面)
c.该进程有前台,及调用过()的
d.该进程的正在执行生命周期回调函数((), () ,() )
e.该进程有正执行()函数
2.可见进程
该进程没有任何前台组件,但是仍然可见 。
a.该进程有pause状态的,但是仍然可见 。比如,被一个风格的挡在前面,其他部分仍然可以被看见 。
b.该进程有绑定到可见的或前台 。
3.服务进程
该进程中有正在运行,但不属于1和2的进程 。
4.后台进程
该进程有不可见的(即调用过())
5.空进程
该进程不含有任何App组件 。该进程存活的目的仅仅是为了提高下一次启动的速度 。
所以我们可以启动一个前台,来守护我们的主进程 。具体如何启动就不再复述了 。
2、一像素页面
一像素页面的原理,相信关注技术的同学都通过其大名,据说某讯的app就采用过此技术 。其实也是守护进 程的一中,只不过启动的不是,而是一个只有一像素的透明页面 。原理如下:
其中心思想是将透明页面至于前台,使系统将自己优先级提高,减少被回收概率!这种方法现在在7.0以下的部分机型比较有效,针对vivo 。oppo做过数据统计,能增加5%的到达率 。