android推送的原理
❶ Android 个推推送 通知栏是什么原理
推送通知栏系统的要素主要分为个推SDK、个推服务器、第三方服务器、四个方面。
个推SDK:通过JAR的形式集成在第三方的客户端,通过并传递第三方平台的数据给客户端。
个推服务器:通常分为两侧,一侧负责个推SDK的连接和维护工作,另外的一侧主要是将第三方平台数据对接发送到个推SDK。
第三方服务器:是主要数据的推送,对接个推服务器的数据发起,传送给客户端。
第三方客户端:个推SDK客户端的第三方集成。
个推推送作用:以提升移动互联网的用户体验为主要目标,提供的永远在线免费推送服务,增加用户黏性。
❷ Android消息推送原理
产品的角度:功能需要,比如说资讯类产品的新闻推送、工具类产品的公告推送等等
运营的角度:活动运营需要,比如说电商类产品的促销活动;召回用户 / 提高活跃度等等
作为开发者,不要有需求就接,应该多思考、多理解用户 / 功能的使用场景,有助于我们更好地去选择合适的开发方式
系统级别:任何时候都可以推送给用户,且不会被系统杀死
Android的消息推送服务称为:C2DM(Cloudto Device Messaging)
消息推送的本质是:App将服务器更新的信息推送给用户,即App获取服务器信息,再推送给用户
App从服务器获取最新消息的基本方式(原理)有3种:Push、Pull 和 SMS
经总结,Android中实现消息推送的有7种主流解决方案,接下来将一一介绍。
4.1 C2DM
定义:Cloud to Device Messaging,云端推送
Android系统级别的消息推送服务-Google出品
原理:基于Push方式,C2DM服务负责处理诸如消息排队等事务,并向运行于目标设备上的应用程序分发这些消息。如下图:
定义:轻量级的消息发布/订阅协议
原理:基于Push方式,wmqtt.jar 是IBM提供的MQTT协议的实现,原理如下图:
其他三种:
客户端
通信能够在这三者的任意两个之间双向发生。
原理流程
现今主流的推送平台分为
手机厂商类:小米推送、华为推送。
第三方平台类:友盟推送、极光推送、云巴(基于MQTT)
BAT大厂的平台推送:阿里云移动推送、腾讯信鸽推送、网络云推送
❸ iOS 和 Android 的后台推送原理各是什么有什么区别
iOS 系统的推送(APNS,即 Apple Push Notification Service)依托一个或几个系统常驻进程运作,是全局的(接管所有应用的消息推送),所以可看作是独立于应用之外,而且是设备和苹果服务器之间的通讯,而非应用的提供商服务器所以, iOS 的推送,可以不严谨的理解为:苹果服务器朝手机后台挂的一个 IM 服务程序发送的消息。
然后,系统根据该 IM 消息识别告诉哪个 App 具体发生了什么事。
然后,系统分别通知这些 App
而 Android每个需要后台推送的应用有各自的单独后台进程,才能和各自的服务器通讯,交换数据。
其实 Android 也有类似 APNS 的 GCM(Google Cloud Message)的服务,如果一个应用的推送采用这种模式的话,就和iOS推送一个样了。
GCM相关的程序应该是集成在所谓的Gapps中,但国内的 Android 手机上 GCM 处于基本不可用的状态,而且Android 因为后台可以长驻,所以,App们各显神通。
聊天类应用的话,大多数直接借用 XMPP 规范里的一些成果。少量如微信有IM底子的,自己开发协议。这些在实现原理上与 APNs / GCM 没有本质的区别,但有一定的技术门槛。
而大多数普遍应用,要使用推送的话,则使用轮询的方式简单实现,就是定时去服务器上查询数据,也叫Polling,还有一种手机跟服务器之间维护一个 TCP 长连接,当服务器有数据时,实时推送到客户端,也就是我们说的 Push。
轮询的方式不论怎么优化都比较费电费流量,长连接的方式在网络不稳定的情况下,Socket比较容易断开推送数据失败,
安卓推送可以考虑使用第三方推送工具,比如极光推送
❹ Android&iOS推送
1.推送的由来:
推送兴起于Email,用于提醒用户邮件的更新. 后续由于移动互联网的迅速发展,推送被广泛应用.
2.推送的原理:
推送的本质原理是客户端与服务器之间的长连接. 基于长连接,服务器可以主动向客户端推送消息, 客户端收到推送消息来展示给用户.
3.推送的实现方式:
方案1-push: 客户端与服务器维护一个TCP/IP的长连接,当有推送消息时,直接向客户端push.
方案2-pull: 客户端定时向服务器pull请求.
两种方式相比较而言, 方案1更合理更有效, 方案2会存在客户端不能长久在后台存活以及消耗电量以及消耗流量等问题.
4.iOS推送:
苹果官方推送: APNS. APNS是由苹果官方维护的, 属于系统级别,所以推送消息比较稳定.
iOS的所有推送信息, 都会发送到苹果服务器,然后由苹果服务器下发到客户端.
5.Android推送:
谷歌官方推送: FCM. FCM是由谷歌官方维护的,同iOS一样, 所有推送信息都会发送到谷歌服务器,再由谷歌下发到客户端.
由于谷歌推送不能在国内使用, 所以需要Android开发者自己去维护长连接.
6.Android推送开发:
方案1: MQTT推送, 此推送是由IBM提出的轻量级的推送, 客户端与服务器之间通过心跳包来监测对方是否存在,然后通过订阅&发布来实现消息的推送.但是缺点也很明显,当客户端被杀死后会无法收到推送.
方案2: 第三方推送, 如腾讯信鸽, 友盟+, 极光推送,小米推送等.目前很多Android的APP在国内都是使用第三方的推送.
方案3: 公司基于XMPP协议开发. 谷歌的推送也是基于XMPP协议开发的.
❺ android消息推送原理是怎么样的
主要介绍其中的五种实现方式:短轮询、Comet、Flash XMLSocket、Server-sent、WebSocket1、短轮询
指在特定的的时间间隔(如每10秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。浏览器做处理后进行显示。无论后端此时是否有新的消息产生,都会进行响应
2、Comet
包括了长轮询和长连接,长轮询是客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求;长连接是在页面中的iframe发送请求到服务端,服务端hold住请求并不断将需要返回前端的数据封装成调用javascript函数的形式响应到前端,前端不断收到响应并处理
3、Flash XMLSocket
在 HTML 页面中内嵌入一个使用了 XMLSocket 类的 Flash 程序。JavaScript 通过调用此 Flash 程序提供的socket接口与服务器端的socket进行通信。JavaScript 在收到服务器端以 XML 格式传送的信息后可以很容易地控制 HTML 页面的内容显示
4、Server-sent
服务器推指的是HTML5规范中提供的服务端事件EventSource,浏览器在实现了该规范的前提下创建一个EventSource连接后,便可收到服务端的发送的消息,实现一个单向通信。客户端进行监听,并对响应的信息处理显示
5、WebSocket
WebSocket是HTML5下一种新的协议,是基于TCP的应用层协议,只需要一次连接,便可以实现全双工通信,客户端和服务端可以相互主动发送消息。客户端进行监听,并对响应的消息处理显示
针对自己系统的应用场景选择合适的推送方案才是合理的,因此最后简单说一下实现个性化推送的两种方式。第一种很简单,直接使用第三方实现的推送,无需复杂的开发运维,直接可以使用。第二种就是自己封装,可以选择如今较为火热的WebSocket来实现系统的推送。
关于第三方推送平台,极光推送,操作简单,稳定性高,送达率快