下面是小编为大家整理的智游推送推送技术原理,供大家参考。
智游推送技术原理
为什么使用推送:
现在的大多数移动端应用都有实时得到消息的能力, 简单来说, 有发送消息的主动权和接受消息的被动权。
例如:
微信, QQ, 天气预报等等, 对于用户体验和好处不用多言。
移动应用互联网特点:
因为手机平台本身、 电量、 网络流量的限制, 移动互联网应用在设计上跟传统 PC 上的应用很大不一样, 需要根据手机本身的特点, 尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端。
为了解决数据同步的问题, 在手机平台上, 常用的方法有 2 种。
一种是定时去服务器上查询数据, 也叫 Polling, 还有一种手机跟服务器之间维护一个 TCP 长连接,当服务器有数据时, 实时推送到客户端, 也就是我们说的 Push。
从耗费的电量、 流量和数据送达的及时性来说, Push 都会有明显的优势,但 Push 的实现和维护成本相对较高。
在移动无线网络下维护长连接, 相对也有一些技术上的难度。
本文试图给大家介绍一下我在 Android 平台上是如何维护长连接。
智游推送如何实现高效稳定且低消耗的推送功能 移动无线网络的特点:
因为 IP v4 的 IP 量有限, 运营商分配给手机终端的 IP 是运营商内网的 IP, 手机要连接 Internet, 就需要通过运营商的网关做一个网络地址转换(Network Address Translation, NAT)
。
简单的说运营商的网关需要维护一个外网 IP、 端口到内网 IP、 端口的对应关系, 以确保内网的手机可以跟 Internet 的服务器通讯。
NAT 功能由图中的 GGSN 模块实现。
大部分移动无线网络运营商都在链路一段时间没有数据通讯时, 会淘汰 NAT 表中的对应项, 造成链路中断。
Push 在 Android 平台上的实现 既然我们知道我们移动端要和 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 来实现心跳的功能, 使其真正的实现长连接,且以最低的消耗。
推荐访问:智游推送推送技术原理 推送 原理 技术