美文网首页技术分享
推送原理以及提高推送到达率的方案介绍

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

作者: 灰海舟 | 来源:发表于2018-12-29 16:17 被阅读0次

何为推送?

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

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

img

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

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

image

推送有哪些?

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

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

  • Google: GCM、FCM

  • 国内手机厂商:华为、小米、魅族、oppo等

  • 国内推送厂商:个推、极光、信鸽、百度云推送、友盟等
    可以看到,安卓是百家争鸣,百花齐放的现象。

推送原理

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

img
  • 应用注册通知服务 (操作系统向APNS请求device token);

  • 应用接收到device token ;

  • 把device token发送给服务器;

  • (服务器)事件发生时,把推送发给APNS;

  • APNS发送推送给App;

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

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

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

如何提高到达率?

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

1、守护进程

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

img

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

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

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

​ 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,而是一个只有一像素的透明页面。原理如下:

img

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

3、APP相互守护

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

4、推送通道共享

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

img

​ 通道共享两个前置条件:

  • 用户同时安装了APP1 和APP2;

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

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

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

安卓统一推送联盟

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

  • App限制交叉唤醒、链式启动。除用户的主动交互触发外,避免启动其它应用未处于运行中的进程。

  • App让设备CPU尽可能处于休眠状态,并避免在不必要的时间段(如夜间)继续调度周期性事件。

  • App避免不必要常驻后台的行为。

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

多通道推送

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

img

​ 接入效果呢??

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

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

相关文章

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

    何为推送? ​ 何为推送?去百度了一番,本想找个官方定义,奈何没有相中的。最后自己总结了一下:服务器将信息定向...

  • 厂商 push 不通排查指南

    为了提升「MPS 消息推送」的推送的到达率,mPaaS 集成了华为、小米等厂商的推送功能,从而有效地提高用户留存率...

  • 如何提高推送的到达率

    为了提高用户体验,现在大多数的应用都会增加推送功能,目前主流的第三方推送有 个推、mi push、百度、Jpush...

  • iOS推送的实现

    iOS中的推送分为本地推送和远程推送,本文主要介绍远程推送的原理。 原理 还是先从下面这张经典的图说起: 要将指定...

  • 推送后传

    前言:推送功能为了提醒用户或者提高应用留活率。关于推送有很多第三方,比如极光,融云,信鸽,其原理也是相同利用APN...

  • Android 网络(五) 推送

    互联网推送服务原理:长连接+心跳机制(MQTT协议)Android推送技术研究Android实现推送方式解决方案a...

  • iOS推送流程以及激光推送介绍

    做远程推送,首先在苹果的开发者中心配置两个证书,下载到本地,在钥匙串中点击对应证书,选择导出证书即可得到激光所需要...

  • 融云IM(二)-----提高推送到达率

    这个都是可以直接看融云文档,我也是按照融云文档接,也没什么好的方法要提高推送到达率必须接第三方的推送,融云有进一步...

  • Cocos Unity安卓接入友盟推送

    项目原来使用百度云推送,推送到达率比较低,了解一下友盟推送。 友盟入口:https://www.umeng.com...

  • iOS怎么推送统计到达率

    掘金地址github地址 ios摘要 iOS10里的通知与推送 国内 90%以上的 iOS 开发者,对 APNs ...

网友评论

    本文标题:推送原理以及提高推送到达率的方案介绍

    本文链接:https://www.haomeiwen.com/subject/eohplqtx.html