实时消息推送在移动端互联网时代很平常,也很重要,它的存在让智能终端真正成为全时信息传播的工具。本文将从移动端无线网络的特点来谈谈实时消息推送的技术原理及相关问题,希望能给你带来些许启发。

移动端实时消息推送的基本实现原理

因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端。

为了解决数据同步的问题,在手机平台上,常用的方法有2种。一种是定时去服务器上查询数据,也叫Polling(严格来讲,这种方式不能称为“实时”)。还有一种手机跟服务器之间维护一个 TCP或UDP 长连接(UDP实际上是无连接协议,但为了解决端口老化问题,仍然需要“心跳保活”机制,我们姑且认为它也是一种广义“长连接”),当服务器有数据时,实时推送到客户端,也就是我们说的 Push。

从耗费的电量、流量和数据送达的及时性来说,Push 都会有明显的优势,但 Push 的实现和维护成本相对较高。在移动无线网络下维护长连接,相对也有一些技术上的难度。

移动端无线网络的特点

因为 IP v4 的 IP 量有限,运营商分配给手机终端的 IP 是运营商内网的 IP,手机要连接 Internet,就需要通过运营商的网关做一个网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关需要维护一个外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器通讯。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

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

Android 平台上推送长连接的实现思路

为了不让 NAT 表失效,我们需要定时的发心跳,以刷新 NAT 表项,避免被淘汰。Android 上定时运行任务常用的方法有2种,一种方法用 Timer,另一种是AlarmManager。

Timer:
Android 的 Timer 类可以用来计划需要循环执行的任务,Timer 的问题是它需要用 WakeLock 让 CPU 保持唤醒状态,这样会大量消耗手机电量,大大减短手机待机时间。这种方式不能满足我们的需求。

AlarmManager:
AlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的时间到达时,通过中断唤醒 CPU。

这意味着,如果我们用 AlarmManager 来定时执行任务,CPU 可以正常的休眠,只有在需要运行任务时醒来一段很短的时间。目前主流的推送技术基本都是基于这种技术实现的。

iOS 平台上的消息推送

众所周之,iOS平台实现消息推送有且仅有唯一方案好选:苹果官方的APNS服务。

浅析即时通讯开发中移动端实时消息推送技术相关推荐

  1. 浅析即时通讯开发之移动端实时音视频直播技术编码和封装

    视频编码是本系列一个重要的部分,如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大,影响物流系统的整体速度和成本.同样,对 ...

  2. 即时通讯开发时移动端实时音视频直播技术之处理

    视频或者音频完成采集之后得到原始数据,为了增强一些现场效果或者加上一些额外的效果,我们一般会在将其编码压缩前进行处理,比如打上时间戳或者公司 Logo 的水印,祛斑美颜和声音混淆等处理.在主播和观众连 ...

  3. Worktile 中百万级实时消息推送服务的实现

    Worktile 中百万级实时消息推送服务的实现 转自:http://www.360doc.com/content/15/0907/19/1073512_497529854.shtml 这是一个创建于 ...

  4. Worktile中百万级实时消息推送服务的实现

    Worktile中百万级实时消息推送服务的实现 出自:http://blog.jobbole.com/81125/ 转载于:https://www.cnblogs.com/ribavnu/p/4531 ...

  5. 【iOS学习笔记】IOS开发中设置applicationIconBadgeNumber和消息推送

    因为在IOS8中要想设置applicationIconBadgeNumber,需要用户的授权,在IOS8中,需要加上下面的代码: UIUserNotificationSettings *setting ...

  6. 即时通讯开发之网页端实时音视频技术WebRTC

    WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音通话或视频聊天的技术,是谷歌2010年以6820万美元收购Globa ...

  7. 消息推送技术干货:美团实时消息推送服务的技术演进之路

    本文由美团技术团队分享,作者"健午.佳猛.陆凯.冯江",原题"美团终端消息投递服务Pike的演进之路",有修订. 1.引言 传统意义上来说,实时消息推送通常都是 ...

  8. 浅谈iOS和Android后台实时消息推送的原理和区别

    http://www.52im.net/thread-286-1-1.html 前言 iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同.实时消息推 ...

  9. Worktile中的实时消息推送服务实现

    在团队协同工具worktile的使用过程中,你会发现无论是右上角的消息通知,还是在任务面板中拖动任务,还有用户的在线状态,都是实时刷新.Worktile中的推送服务是采用的是基于xmpp协议.erla ...

最新文章

  1. 线程基类的构建与代码实践
  2. 关于SQL的几个备忘
  3. 神经网络 并行预测_研究人员研究了为什么神经网络可以有效地进行预测
  4. 1785: 数字游戏(贪心/bfs--定义全局数组变量遇到编译错误的问题)
  5. 网站运行java_定制化Azure站点Java运行环境(5)
  6. 【PAT - 甲级1006】Sign In and Sign Out (25分)(STLmap)
  7. 基于商品包含关系的飞猪搜索优化实践
  8. 古剑2计算机中丢失,小编研习win7系统玩古剑奇谭2提示计算机中丢失Vcomp100.dl的图文方法...
  9. 冯诺依曼体系下 计算机主机不包括,计算机组装第一张测试
  10. 正交矩阵和Gram-Schmidt正交化
  11. 25.MySQL sql_mode
  12. android开发---9.MediaPlayer实现音乐播放的demo
  13. 计算机专业本科一批,本科一批招生计划
  14. php ios表情包,php处理APP中 emoji表情包的方法
  15. 读文献——《Very Deep Convolutional Networks for Large-scale Image Recognition》
  16. php下载链接 迅雷下载,php实现把url转换迅雷thunder资源下载地址的方法
  17. uniapp生成android并调用第三方sdk的拍照进行身份证识别
  18. python如何打开npy文件_python实现npy格式文件转换为txt文件操作
  19. Jmeter(十八):硬件性能监控指标
  20. nvd、nvm索引文件的生成

热门文章

  1. chatgpt赋能Python-python_descending
  2. 字节-蚂蚁-百度等大厂大数据开发面试及各大公司真题
  3. #define怎么将多个常量字符串连接起来
  4. 更改计算机ram,如何向计算机添加RAM
  5. 厦门理工学院OJ题解(合集)
  6. 计算机打不开打印机设备,Win7系统控制面板“设备和打印机”打不开怎么办
  7. Android高版本网络请求失败 Cleartext HTTP traffic to xxx not permitted
  8. python截图代码_Python为PPT文件进行截图操作的代码
  9. Git入门第一讲:Windows版本git下载安装
  10. web python识花_7行Python代码,搭建可以识花的机器学习App|视频教程