揭秘:智游推送技术原理

 

智游推送技术原理java

 

为何使用推送:android

如今的大多数移动端应用都有实时获得消息的能力,简单来讲,有发送消息的主动权和接受消息的被动权。例如:微信,QQ,天气预报等等,对于用户体验和好处不用多言。服务器

移动应用互联网特色:微信

 

由于手机平台自己、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不同,须要根据手机自己的特色,尽可能的节省电量和流量,同时又要尽量的保证数据能及时到达客户端。网络

为了解决数据同步的问题,在手机平台上,经常使用的方法有2种。一种是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个 TCP 长链接,当服务器有数据时,实时推送到客户端,也就是咱们说的 Pushspa

从耗费的电量、流量和数据送达的及时性来讲,Push 都会有明显的优点,但 Push 的实现和维护成本相对较高。在移动无线网络下维护长链接,相对也有一些技术上的难度。本文试图给你们介绍一下我在 Android 平台上是如何维护长链接。设计

智游推送如何实现高效稳定且低消耗的推送功能同步

移动无线网络的特色:it

由于 IP v4 的 IP 量有限,运营商分配给手机终端的 IP 是运营商内网的 IP,手机要链接 Internet,就须要经过运营商的网关作一个网络地址转换(Network Address TranslationNAT)。简单的说运营商的网关须要维护一个外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机能够跟 Internet 的服务器通信。io

 

NAT 功能由图中的 GGSN 模块实现。

大部分移动无线网络运营商都在链路一段时间没有数据通信时,会淘汰 NAT 表中的对应项,形成链路中断。

PushAndroid平台上的实现

既然咱们知道咱们移动端要和Internet进行通讯,必须经过运营商的网关,因此,为了避免让NAT映射表失效,咱们须要定时向Internet发送数据,来保持NAT映射表的活性。

这时候就须要用到定时器,在Android上定时器一般有如下两种:

java.util.Timer

android.App.AlarmManager

分析:

Timer:能够按照计划或者时间周期来执行相关的任务。可是Timer须要用WakeLock来让CPU保持唤醒状态,才能保证任务的执行,这样子会消耗大量电量;当CPU处于休眠的时候,就不能唤醒执行任务,因此应用于移动端明显是不合适

AlarmManager:AlarmManager类是属于android系统封装好来管理RTC模块的管理类。这里就涉及到RTC模块,要更好地了解二者的区别,就要明白二者真正的区别。
  RTC(Real- Time Clock)实时闹钟在一个嵌入式系统中,一般采用RTC 来提供可靠的系统时间,包括时分秒和年月日等;并且要求在系统处于关机状态下它也可以正常工做(一般采用后备电池供电),它的外围也不须要太多的辅助电路,典型的就是只须要一个高精度的32.768KHz 晶体和电阻电容等。(若是对这方面感兴趣,能够本身查阅相关资料,这里就说个大概)
好了,回来正题。因此,AlarmManager又称全局定时闹钟。这意味着,当我用使用AlarmManager来定时执行任务,CPU能够正常地休眠,只有在执行任务是,才唤醒CPU,这个过程是很短期的。

在推送中使用AlarmManager来实现心跳的功能,使其真正的实现长链接,且以最低的消耗。

相关文章
相关标签/搜索