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

1 篇文章 0 订阅
1 篇文章 0 订阅

何为推送?

        何为推送?去百度了一番,本想找个官方定义,奈何没有相中的。最后自己总结了一下:服务器将信息定向的发送到手机端,并通过通知栏(包括自定义)的形式,展示给用户的技术。不一定准,就是这个意思,大家都懂得。

       先推一波广告吧,自己搞的试水小程序,个税计数器,感兴趣的同学可以试试:

        相信做app的同学,一定会涉及到过push的接入,无论iOS还是Android。今天就和大家聊聊推送的原理,以及我们在提高到达率上,做的那些内容。

        下面一张图,就是推送的大致流程:

推送有哪些?

        iOS同学很幸福,由于苹果的政策,不需要考虑那么多,苹果已经提供了官方的推送服务:APNS。

        相对的,苦逼的安卓同学就没那么好运了。先看看安卓的推送服务:

  • Google: GCM、FCM
  • 国内手机厂商:华为、小米、魅族、oppo等
  • 国内推送厂商:个推、极光、信鸽、百度云推送、友盟等

        可以看到,安卓是百家争鸣,百花齐放的现象。

 

推送原理

        虽然推送服务很多,但是原理还是比较简单相似的,我们已APNS为例,其原理大致如下:

  • 应用注册通知服务 (操作系统向APNS请求device token);
  • 应用接收到device token ;
  • 把device token发送给服务器;
  • (服务器)事件发生时,把推送发给APNS;
  • APNS发送推送给App;

        安卓的推送原理与APNS并无本质的不同,都是通过长连接进行消息传递,所以这里不再重复讲解。虽然原理不同,但是差别还是很大的,具体差别如下:

 iOSAndroid
推送服务商苹果一家,三方sdk也是集成apns百家争艳
推送服务保持系统保持手机厂商自家的推送,是系统级别的服务,其他推送,生命周期和app生命周期一致
推送到达率手机厂商的推送到达高,其他的到达率低

        可以看到,iOS开发同学并不需要关注到达率问题,因为苹果官方帮你做了,但是Android,就必须关注了。如何处理app的push,直接影响你的到达率。

 

如何提高到达率?

        如何提高到达率是大家最关心的问题。这里主要介绍的是安卓,并且只介绍一些方法,具体实现,还请自行百度或者code。

 

1、守护进程

        何为守护进程?请看下图:

        原理:双进程轮询检测对方状态,发现对方被回收,即重新启动对方进程,达到守护状态;

        如何设置守护进程?这里给大家提个思路;

        安卓的进程回收机制相信大家了解:

        1.前台进程

           a.该进程有用户正在交互的activity,即调用过onResume()的Activity

            b.该进程有绑定到正在交互的Activity的service。(service可以绑定到activity,待研究,可能类似于google play服务的支付界面)

            c.该进程有前台service,及调用过startForeground()的service

           d.该进程的service正在执行生命周期回调函数(onCreate(), onStart() ,onDestroy() )

           e.该进程有BroadcastReceiver正执行onReceive()函数

        2.可见进程

            该进程没有任何前台组件,但是仍然可见。

            a.该进程有pause状态的Activity,但是仍然可见。比如,被一个dialog风格的activity挡在前面,其他部分仍然可以被看见。

           b.该进程有service绑定到可见的或前台Activity。

        3.服务进程

          该进程中有service正在运行,但不属于1和2的进程。

        4.后台进程

           该进程有不可见的activity(即调用过onStop())

        5.空进程

        该进程不含有任何App组件。该进程存活的目的仅仅是为了提高下一次启动的速度。

        所以我们可以启动一个前台service,来守护我们的主进程。具体如何启动就不再复述了。

 

2、一像素页面

        一像素页面的原理,相信关注技术的同学都通过其大名,据说某讯的app就采用过此技术。其实也是守护进 程的一中,只不过启动的不是service,而是一个只有一像素的透明页面。原理如下:

        其中心思想是将透明页面至于前台,使系统将自己优先级提高,减少被回收概率!这种方法现在在7.0以下的部分机型比较有效,针对vivo。oppo做过数据统计,能增加5%的到达率。

 

3、APP相互守护

        这个可以看成升级版的守护进程。需要你有资源,能够联合其他APP,共同和你做此事,一般的,只有大厂,在自家旗下的多个app可能采用此种策略。

 

4、推送通道共享

        顾名思义,就是多个APP,使用一个通道进行数据下发。这里的一个通道,一般是指一个厂商的推送,比如个推。当然,这种策略,厂商已经帮你做好了,只不过需要你付费开通罢了。其原理如下:

        通道共享两个前置条件:

        1、用户同时安装了APP1 和APP2;

        2、APP1启动,APP2未启动时,服务向APP2发送推送消息:

        满足以上两个条件,此时通道共享策略生效:

        推送通道会通过APP1的通道,尝试启动APP2的推送服务,如果启动成功,则向APP2发送消息,此时,APP2就会收到推送消息;

 

安卓统一推送联盟

        相信看到以上方法,有些同学觉得流氓。这些进程都会悄悄的消耗用户的手机性能。的确,各大厂商也意识到这种问题了。所以,去年工信部旗下中国信息通信研究院泰尔终端实验室倡导成立了“安卓统一推送联盟”。倡议:

  • App限制交叉唤醒、链式启动。除用户的主动交互触发外,避免启动其它应用未处于运行中的进程。
  • App让设备CPU尽可能处于休眠状态,并避免在不必要的时间段(如夜间)继续调度周期性事件。
  • App避免不必要常驻后台的行为。

        看来,以上的手段,要玩完啊。但是我们还有办法。

 

多通道推送

        多通道推送。被技术不耻,完全没有技术含量,就是把有效果的通道都接一遍。虽然技术含量低,但是产出绝对高。先上个原理图吧:

        接入效果呢??

        小编的app,之前只接了小米和个推,在小米上的次日日活到达率能达到90%。其他手机表现较差,后来接入了华为通道,单单华为手机用户的到达率,飙涨100%,整体到达率提高了10个百分点。很有效果吧~~

        好了,今天小编对push的内容就这些,希望对你有所帮助~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值