首先简单介绍一下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. MySQL4:存储过程和函数

    什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函 ...

  2. 如何捕获和分析 JavaScript Error

    前端工程师都知道 JavaScript 有基本的异常处理能力.我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常.但估计绝大多数前端工程师都没考虑过收集这些异常 ...

  3. WPF路线图白皮书: 2015及未来

    介绍 当2006年微软首次推出Windows Presentation Foundation(WPF)时,它代表了应用程序的设计和开发又向前跨出了巨大的一步.它简化了GUI应用程序的开发,有助于UI和 ...

  4. c基础回顾

    发现一个很好的c学习网站http://see.xidian.edu.cn/cpp/html/ 做了一些练习: #include <string.h> #include <stdio. ...

  5. 10 个 Redis 建议/技巧

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/145.html?1455790611 Redis 在当前的技术社区里是非常 ...

  6. angularjs的$filter使用

    angularjs的$filter使用 $filter服务可以在js中对数据进行过滤处理,ng有几个内建的filter,其中有一个叫filter的filter,可方便的实现属性的过滤. 详细的API参 ...

  7. django获取指定列的数据

    django获取指定列的数据 model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到values和values_list [values()](https://do ...

  8. ServletConfig对象详解

    在Servlet 的配置文件中,可以用一个或多个<init-param>标签为servlet配置一些初始化参数. 当servlet配置了初始化参数之后,web容器在创建servlet实例对 ...

  9. 重构Mybatis与Spring集成的SqlSessionFactoryBean(2)

    三.代码重构 1.先使用Eclipse把buildSqlSessionFactory()方法中众多的if换成小函数 protected SqlSessionFactory buildSqlSessio ...

  10. iReport 中使用 Chart 图

    iReport 中使用 Chart 图 SSH2项目中需要引入如下两个jar包: jfreechart-1.0.12.jar jcommon-1.0.15.jar 从 iReport 的安装目录下搜索 ...