彻底理解推送

一、概念

1、早期推送服务

   在移动互联网以前的手机,如果有事情发生要通知用户,则会弹出一个窗口,告诉用户正在发生的事,可能是未接电话提示、日历提醒或是一封彩信。推送功能最早是被用于Email中,而目前更多地被应用于App中。

2、推送

   一般地,当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,而要获取服务器上不定时更新的信息一般有两种方法:

   (1)客户端pull(拉)的方式,就是隔一段时间就去服务器获取一下信息,看是否有更新的信息出现,即用户主动发起请求,向服务器获取数据;

   (2)服务器使用push(推)的方式,当服务器有新信息了,就把新的信息push到客户端上,这样,客户端就能自动的接受到消息,也就是服务器主动发送数据给客户端。

比较两种方式的优缺点:

   两种方式都能实现获取服务器端更新信息的功能,但明显地,push方式比pull方式好,因为pull方式更费客户端网络流量,要主动从服务器端获取最新信息,更主要的是耗费电量,App上还要有程序服务不停地检测服务端的变化。Push使用的场景有两个特点:时间不确定性和时效性,如发送团购信息/发送电子消费账单等。  

   一般地,利用推送只是告诉手机端服务器发生了某些改变,当客户端收到通知以后,应该主动到服务器获取最新的数据,这样才是推送服务的完整实现。

   一般情况下,客户端与服务器之间通讯客户端是主动的,但这就存在一个问题就是一旦服务器数据有更新或者服务器要下发通知给客户端只能等客户端连接的时候才能实现。这种方式使消息失去了实时性。

3、通知和消息的区别

   (1)通知:发送后会在系统通知栏收到展现,同时响铃或震动提醒用户。

   一般地,实现Android的消息通知栏,必须要用到两个类:NotificationManager和Notification,其中NotificationManager的初始化是通过getSystemService方法,并且通过notify方法来向Android系统发送消息栏通知和显示。   

   (2)消息:发送后不会在系统通知栏展示,SDK将消息传给第三方应用后需要开发者自己使用代码展示。

   开发者在接收到消息数据后,可以将解析出来的数据,显示在自定义的界面上,也就是说,可以自定义通知界面、提醒方式,以Notification的方式让用户看到该消息内容。

二、推送使用场景

三、原理

1、推送方案实现原理

   (1)轮询方式(pull): 客户端应用程序需阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,如消息排队等,并且还要考虑轮询的效率,太慢会导致消息的延迟,太快,会大量消耗网络带宽和电池。

   (2)SMS方式(push): 在Android平台上,可以通过拦截SMS消息并解析消息内容来了解服务器的意图,并获取其显示内容进行处理(???),其好处是可以实现完全的实时操作,但成本太高,需要向移动公司缴纳相应的费用。

   (3)持久连接(push): 可以解决轮询问题带来的性能问题,但还是会消耗手机电池。

时间: 2024-07-30 02:14:48

彻底理解推送的相关文章

【android极光推送】—从客户端到后台,一文通吃

前记 推送原理浅析 平台说明 概念解释 推送的三种实现方式 客户端直接向推送服务方发送Http请求 项目服务器通过Http转发推送请求至推送服务方 项目服务端使用SDK进行功能集成 关于推送的种类概述 android客户端初步实现 集成SDK说明 集成步骤 1下载官方提供的SDK集成包 2手动导入SDK 3在极光的官网创建一个应用 4编写一个MyApplication类初始化SDK 5配置 AndroidManifestxml wampServer服务端配置 配置推送SDK 通过composer

【转】推送怎么玩

推送和移动互联的关系,已经密不可分.每天你收到的推送是各大app的强有力的吸引用户黏住用户的工具. 那我们来具体了解下推送吧.目前的两大平台ios和安卓的推送的实现是有很大差异的.以下分开描述. IOS&android简要对比 IOS推送即APNS - Apple Push Notification Service,依托一个或几个系统常驻进程,是全局的(接管所有应用的消息推送)的独立于应用之外,是设备和苹果服务器之间的通讯,而非应用的提供商服务器. 比如,网易云课堂的服务器(Provider)给

友盟推送里面的Alias怎么用?可以理解成账号吗?

友盟推送里面的Alias怎么用?可以理解成账号吗? 我们的App有自己的账号体系的,想在每次用户登陆的时候,给用户发一个欢迎消息. 看了一下友盟推送,里面有一个概念叫做Alias(别名),但是官方文档写着Alias是和设备绑定的,感觉Alias算不上是严格意义的账号.不知道其它集成过友盟推送的兄弟们是否有类似的需求,是否可以通过友盟推送提供的Alias功能来满足我们的需求? 作者:沙漠链接:http://www.zhihu.com/question/31882775/answer/5425406

对于推送的理解与总结

一.DDPush推送: 1.原理: 详见http://yt0116.blog.51cto.com/9221014/1688096 2.特点: (1)只能实现个推,如果要推送多个人的话,就使用循环进行控制 (2)实现简单推送,但是可以自定义推送格式和内容,有通用推送.分类推送.自定义推送三种格式,比较灵活. (3)DDPush是基于Socket编程的原理,使用UDP协议进行控制的.服务器端监听客户端信息并进行通信. 3.配置:见DDPush官网 4.疑问: (1)uuid与客户端是怎么对应的? 在

iOS 消息推送及本地通知,原理解析

在此整理了一些前辈的思路,根据自己对问题的理解及相似方面的比较做了这篇笔记,本文并未详细讲解,只是根据自己提出问题进行一个解决,希望能对大家有些帮助. 1. deviceToken与UUID,UDID的区别 deviceToken : A token that identifies the device to APS. The token is an opaque data type because that is the form that the provider needs to subm

git 学习小记之记住https方式推送密码

昨天刚刚学了点git基础操作,但是不幸的是[email protected]给出公告说尽量使用 https 进行操作.可是在用 https 进行 push 时,都需要输入帐号和密码. 各种百度谷歌之后在[email protected]官网找到了解决方法<https方式使用[email protected]设置密码的方式>文中给出了几个方法,并且都非常简单. 关于 cache 缓存方式,我不太喜欢,因为要设置时间,而且会过期.而 store 相应的非常方便,设置全局后,方便多个库使用.当然如果

MQTT与Mosquitto服务器搭建以及Android推送(一)MQTT简介

文章钢要: 对MQTT协议有一定认识 对MQTT运行原理有一定了解 一.什么是MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议. 国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议.其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息. MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息

git与github的文件推送

第一步:安装git 一切next完成之后 回到我们桌面 点击右键 出现了下图的两个图标 说明安装成功了 第二步:点击我们的git Bash Here 进入命令行 完成一下我们的配置 git config --global user.name"你的用户名" git config --global user.email"你的邮箱号" 设置好后 可以通过命令git config -l (这是字母l)查看我们刚才设置的参数 第三步:创建版本库  可以在你的电脑任何创建一个文

通向高可扩展性之路(推特篇) ---- 一个推特用来支撑1亿5千万活跃用户、30万QPS、22MB每秒Firehose、以及5秒内推送信息的架构

原文链接:http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active-users.html 写于2013年7月8日,译文如下: “可以解决推特所面临的挑战”的玩具般的方案是一个常用在扩展性上的比喻.每个人都觉得推特很容易实现.稍微具备一些系统架构的知识我们就可以构建一个推特,就这么简单.但是根据推特软件开发部门的VP Raffi Krikorian在 Timelin