Android客户端消息推送原理简介
首先简单介绍一下Android消息推送的主要三种方式,如果你已经看过类似的文章,请直接忽略三种介绍。
1.使用SMS服务,即服务器端发送短信,然后手机客户端监听短信的广播,然后对数据进行一定的处理,达到消息推送的目的。好处就是省电,省流量,但是运
营商会很费钱。毕竟发送短信都是需要金钱支持的,并且会有环境的限制。平板、或者用户停机的情况下,就没有办法使用推送了。所以这种解决方案,仅仅是在某
些及其特殊的情况下(移动、联通、电信这种公司)才会使用。
2.使用轮询的方式来从网络中主动获取数据。费电、费流量。这种方式方便理解,实现也较为简单(我们的近乎客户端1.0就是这么实现推送的)。如果只是做
个Demo的情况下还是可以使用。但是作为正在运行的应用,不论你怎么优化,一般是会比较耗费流量的,毕竟一直在获取网络中的数据。
3.使用长连接的方式,一般来说,推送的主要数据,都是依赖于这种方式进行数据推送的。省流量、费电。简单介绍一下原理,原理就是跟服务器端建立一条长时
间的数据流连接,手机客户端一直在等待手机客户端中的数据。因为连接是持续的,并且没有数据流操作,所以网络中的流量还是相对较为节省的。但是因为一直保
持网络中的连接,所以这种消息推送,肯定是比较费电的。很多软件就是这样制作的。像苹果、Android推荐使用的C2DM都是使用的这种模式(苹果处理
的比较好的地方,是整个手机只是用一个连接,原本Android也想使用这种模式,无奈Google的服务器在美国,介于天朝防火墙的问题,这种推送会不
稳定)。但是这种模式下也会有一定的缺陷,在网络不稳定的情况下(火车、公交车、开车都会造成网络不稳定),Socket比较容易断开。连接不稳定的情况
下。推送数据容易失败。还是有不少推送的组件都是基于这种模式做的。
然后简单介绍一下,近乎客户端的消息推送的规划。在近乎客户端中,应用到推送
的功能模块并不是很多,有私信、通知、请求、即时聊天功能(正在规划中)。其中私信、通知、请求属于非即时性需求,简单的延迟个几分钟关系也不是很大(比
如说,你的同学在站点中AT了你,你在五分钟之后才对他的这个动作处理,也没有什么太大的问题),即时聊天属于即时性功能(想想一下,你的老婆跟你说,想
你了,你过了二十分钟之后才回一句,……)。这两种是完全不同的两种需求。本次我们只介绍前面那种。

分别介绍一下手机客户端和服务器端要进行的处理,请一边看图一边理解。
手
机客户端要先询问服务器是否允许Socket连接,不允许处理很简单,直接使用轮询的方式获取数据。如果服务器端允许连接,那么就尝试连接,并且检测
Socket是否可用。如果长时间网络不稳定,则侧向与轮询,并且检测网络环境是否稳定。等到网络稳定的时候再使用Socket进行数据推送。
服务器端,首先检测是否启用了Socket,如果启用了。就等待手机连接客户端,等到客户端连接之后将数据推送给手机。
这样数据就可以较为正常的推送给手机客户端了。
第一次写。写的不好,欢迎板砖
Android客户端消息推送原理简介的更多相关文章
- IOS - 消息推送原理和实现
一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...
- iOS 消息推送原理及实现Demo
一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...
- iOS 消息推送原理
一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图: 1. Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Prov ...
- iOS开发消息推送原理
转载自:http://www.cnblogs.com/cdts_change/p/3240893.html 一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Prov ...
- iOS远程消息推送原理
1. 什么是远程消息推送? APNs:Apple Push Notification server 苹果推送通知服务苹果的APNs允许设备和苹果的推送通知服务器保持连接,支持开发者推送消息给用户设备对 ...
- iOS消息推送原理和实现总结
一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图:1. Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provi ...
- Android开发学习笔记-关于Android的消息推送以及前后台切换
下面是最简单的Android的消息推送的实现方法 package com.example.shownotic; import java.util.Random; import android.supp ...
- android热门消息推送横向测评![转]
关于这个话题,已经不是什么新鲜事了.对于大多数中小型公司一般都是选择第三方的服务来实现.但是现在已经有很多提供推送服务的公司和产品,如何选择一个适合自己项目的服务呢?它们之间都有什么差别?在此为大家做 ...
- [android] 安卓消息推送的几种实现方式
消息推送的目的:让服务器端及时的通知客户端 实现方案 轮询:客户端每隔一定的时间向服务器端发起请求,获得最新的消息 特点:如果用在最新新闻通知上,效率就有点低了,技术简单,好实现 应用场景:服务器端以 ...
随机推荐
- 图解集合4:HashMap
初识HashMap 之前的List,讲了ArrayList.LinkedList,最后讲到了CopyOnWriteArrayList,就前两者而言,反映的是两种思想: (1)ArrayList以数组形 ...
- Programming Entity Framework CodeFirst -- 约定和属性配置
以下是EF中Data Annotation和 Fluenlt API的不同属性约定的对照. Length Data Annotation MinLength(nn) MaxLength(nn) ...
- 一次外企QQ面试
无忧上挂了简历,让个外企的hr约好面试,今天刚面完,整理出来给大家看看.难度不是很大,基本就是Asp.net Mvc 用到的东西,没有问数据库方面的. Part I – Frontend 1. Tr ...
- HTTP协议解析
1. HTTP版本 HTTP/1.0 HTTP/1.1 HTTP-NG 2. 会话方式 HTTP/1.0 建立连接->请求->响应->断开连接 每次连接只处理一次请求和相应,对资源的 ...
- Linux 通配符
概述 本章节主要介绍关于linux通配符的用法,熟练运用通配符可以提高工作效率并且可以简化一些繁琐的处理步骤. 正文 测试数据 touch a a6.log abc.log ac.txt b c c5 ...
- [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索
1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...
- undefined function openssl_x509_read
打开php.ini,找到这一行 ;extension=php_openssl.dll,将前面的";"去掉 再重启apache或者iis即可
- Linux grep总结(转)
源自:http://www.cnblogs.com/end/archive/2012/02/21/2360965.html 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表 ...
- React Native02-开始运行 Android篇
1. 开始运行 1)用命令进入到新建的文件目录下,比如HelloWorld,再输入 react-native start: 在等待一段时间后,我们看到最后面有个地址,说明已经运行成功了. 我们输入地址 ...
- Atitit usrQBK1600 技术文档的规范标准化解决方案
Atitit usrQBK1600 技术文档的规范标准化解决方案 1.1. Keyword关键词..展关键词,横向拓展比较,纵向抽象细化拓展知识点1 1.2. 标题必须有高大上词汇,参考文章排行榜,1 ...