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

分别介绍一下手机客户端和服务器端要进行的处理,请一边看图一边理解。

机客户端要先询问服务器是否允许Socket连接,不允许处理很简单,直接使用轮询的方式获取数据。如果服务器端允许连接,那么就尝试连接,并且检测
Socket是否可用。如果长时间网络不稳定,则侧向与轮询,并且检测网络环境是否稳定。等到网络稳定的时候再使用Socket进行数据推送。
    服务器端,首先检测是否启用了Socket,如果启用了。就等待手机连接客户端,等到客户端连接之后将数据推送给手机。
这样数据就可以较为正常的推送给手机客户端了。

第一次写。写的不好,欢迎板砖

Android客户端消息推送原理简介的更多相关文章

  1. IOS - 消息推送原理和实现

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...

  2. iOS 消息推送原理及实现Demo

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...

  3. iOS 消息推送原理

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图: 1. Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Prov ...

  4. iOS开发消息推送原理

    转载自:http://www.cnblogs.com/cdts_change/p/3240893.html 一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Prov ...

  5. iOS远程消息推送原理

    1. 什么是远程消息推送? APNs:Apple Push Notification server 苹果推送通知服务苹果的APNs允许设备和苹果的推送通知服务器保持连接,支持开发者推送消息给用户设备对 ...

  6. iOS消息推送原理和实现总结

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图:1. Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provi ...

  7. Android开发学习笔记-关于Android的消息推送以及前后台切换

    下面是最简单的Android的消息推送的实现方法 package com.example.shownotic; import java.util.Random; import android.supp ...

  8. android热门消息推送横向测评![转]

    关于这个话题,已经不是什么新鲜事了.对于大多数中小型公司一般都是选择第三方的服务来实现.但是现在已经有很多提供推送服务的公司和产品,如何选择一个适合自己项目的服务呢?它们之间都有什么差别?在此为大家做 ...

  9. [android] 安卓消息推送的几种实现方式

    消息推送的目的:让服务器端及时的通知客户端 实现方案 轮询:客户端每隔一定的时间向服务器端发起请求,获得最新的消息 特点:如果用在最新新闻通知上,效率就有点低了,技术简单,好实现 应用场景:服务器端以 ...

随机推荐

  1. google map javascript api v3 例子

    之前一直用百度map,但如果是国外的项目就需要用google地图.由于在国内屏蔽了google地图的服务,因此调用的是一个国内地址(开发用).这个地址没有用key,语言设置也还是中文的. //---- ...

  2. node(websocket)

    websocket原本是html5下实现长链接的一个特性,当前已被众多浏览器支持. 在websocket协议中,首先通过http交换一次握手,明确将协议升级至websocket.同时建立一个TCP通道 ...

  3. Syncfusion 复选框 ComboBoxAdv

    XAML: <syncfusion:GridTemplateColumn.EditTemplate> <DataTemplate DataType="viewModel:C ...

  4. JavaScript中需要注意的几个问题

    JavaScript是一门弱语言,她使用起来不像C/C++那样有十分繁琐的内存管理.类型定义等,所以学习JavaScript的门槛相对来说也比较低.门槛低并不意味着这门语言很简单,我们在使用的时候会遇 ...

  5. Android多线程分析之一:使用Thread异步下载图像

    Android多线程分析之一:使用Thread异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处   打算整理一下对 Android F ...

  6. PHP爬虫(2)DOM处理

    摘要:在PHP爬虫(1)中详细了介绍了CURL抓取HTML数据的技术.采集数据处理也是爬虫技术中非常重要的部分.处理HTML数据可以用字符串查找,也可以利用正则表达式,但采用Dom处理是最高级的方法. ...

  7. 一个用微软官方的OpenXml读写Excel 目前网上不太普及的方法。

    新版本的xlsx是使用新的存储格式,貌似是处理过的XML. 传统的excel处理方法,我真的感觉像屎.用Oldeb不方便,用com组件要实际调用excel打开关闭,很容易出现死. 对于OpenXML我 ...

  8. UWP 入门教程2——如何实现自适应用户界面

    系列文章 UWP入门教程1——UWP的前世今生 如上文所说的,布局面板根据可用的屏幕空间,指定界面元素的大小和位置.例如StackPanel 会水平或垂直排列界面元素.Grid 布局与CSS 中的表格 ...

  9. MySQL服务器安装配置-非安装版、windows版

    文档以5.6.30版本为例子说明 1. 下载MySQL http://dev.mysql.com/downloads/mysql/5.6.html#downloads 我们可以选择自己所需要的版本.环 ...

  10. NSString NSNumber 相互转化

    NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init]; NSNumber *firstNum = [NSNumber n ...