Android—消息推送机制
知识点:
- 长连接与短连接
- 端内与端外推送
- 通知与透传消息
- 服务保活(心跳机制)
长连接和短连接
消息推送需要客户端与服务端进行连接,因此分为两种方式
长连接,在TCP层握手成功后,不立即断开连接,并在此连接的基础上进行多次消息(包括心跳)交互,直至连接的任意一方主动断开连接,此过程称为一次完整的长连接。HTTP 1.1相对于1.0最重要的新特性就是引入了长连接。比如现在的即时通讯,基于XMPP、MQTT协议的消息推送。
- 短连接,客户端收到服务端的响应后,立刻发送FIN消息,主动释放连接。也有服务端主动断连的情况,凡是在一次消息交互(发请求-收响应)之后立刻断开连接的情况都称为短连接。注:短连接也是建立在TCP协议上的,有完整的握手挥手流程,区别于UDP协议的无连接。实现的过程是android开机启动服务,使用HTTP轮循方式,定时访问服务器,服务器json形式返回数据,客户端再解析数据,把内容显示在通知栏栏。
端内与端外推送
端指的是客户端,当App的推送服务在运行的时候,这时的推送称为端内推送。当App推送服务没有运行,或者被系统干掉的时候,就需要进行端外推送。
端内推送一般是走App自己实现的一套推送系统:推送服务器是自己的,客户端维护一条长连接连到自己的推送服务器,不依赖任何第三方的推送系统,长连接与短连接就是端内推送的实现方式。
端外推送,在iOS上只要使用APNS就行了,在Android上,跟APNS对应的服务是谷歌的GCM (Google Cloud Messaging),但是谷歌的网络我们用不了,所以我们必须依赖第三方的推送平台。
第三方推送,Android手机有非常多的厂商,各厂商推送没有统一的问题,导致Android消息推送难以同IOS一样。
我们可以到各厂商开发者平台注册应用,然后进行集成,开启对应推送功能,获取对应的key和secret,也可以采用个推,极光推送,BAT大厂推送等,但是要钱。
通知与透传消息
- 透传消息是指第三方推送消息给客户端SDK,直接把消息通过回调方法发送给应用,不做任何处理,应用可以自己选择如何展示,在通知栏或者在应用右上角显示红点等方式。
- 通知消息是指在设备接收到消息之后,直接弹出标准安卓通知栏通知。
如果自己没有实现端内推送,也可以全部都通过第三方推送来实现,不过应该采用透传的方式。
Android端实现消息推送的几种方式
轮询:客户端定时向服务器请求数据。伪推送。缺点:费电,费流量。
拦截短信消息。服务器需要向客户端发通知时,发送一条短信,客户端收到特定短信之后,先获取信息,然后拦截短信。伪推送。缺点:贵而且短信可能被安全软件拦截。
持久连接(Push)方式:客户端和服务器之间建立长久连接。真正的推送。
Google的C2DM(Cloudto Device Messaging)。需要科学上网,国内大多数用户无法使用。
XMPP。XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议。androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。
MQTT。MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。
关于服务保活,为什么长连接还需要保活,就是因为安卓8.0后Service后台服务随时可能被干掉,还有TCP在一段时间内没有消息传递就会断开连接等等,就不在此展开。
关于MQTT知识:
https://www.runoob.com/w3cnote/mqtt-intro.html
Android—消息推送机制相关推荐
- Android消息推送机制
1.推送方式基础知识: 当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如<地震应急通>就需要及时获取服务器上最新的地震信息.要获取服务器 上不定时更新的信息一般 ...
- 移动手机消息推送机制
由于公司要做一个android的消息推送功能,让我进行了一个调研,发现网上没有一个集中说明的地方,自己在网上搜罗了一些资料并且自己总结了一下. 对于消息的提醒方式可以分为四种:固定窗口.弹出窗口.手机 ...
- android开发 app消息提醒功能,Android中利用App实现消息推送机制的代码
1.消息推送机制 服务器器端需要变被动为主动,通知客户一些开发商认为重要的信息,无论应用程序是否正在运行或者关闭. 我想到了一句话:don't call me,i will call you! qq今 ...
- 国内APP消息推送机制以及微信消息延迟问题剖析
转自:https://club.huawei.com/thread-15878044-1-1.html 一.前言 随着安卓手机以及QQ/微信/支付宝/滴滴出行/美图外卖等一大批移动通信/移动消费应用的 ...
- Android消息推送 解决方案
前言 鉴于现在运营需求的增强,消息推送在Android开发中应用的场景是十分常见 如电商的活动宣传.资讯类产品进行新闻推送等等 推送消息截图 今天,我将全面介绍Android中实现消息推送的7种主流解 ...
- android消息推送demo
android消息推送demo 1.消息推送机制 服务器器端需要变被动为主动,通知客户一些开发商认为重要的信息,无论应用程序是否正在运行或者关闭. 我想到了一句话:don't call me,i ...
- 友盟小米收不到推送消息_一个轻量级、可插拔的Android消息推送框架。一键集成推送(极光推送、友盟推送、华为、小米推送等)...
XPush 一个轻量级.可插拔的Android消息推送框架.一键集成推送(极光推送.友盟推送.华为.小米推送等),提供有效的保活机制,支持推送的拓展,充分解耦推送和业务逻辑,解放你的双手! 在提iss ...
- Android消息推送:手把手教你集成小米推送
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/category.j ...
- Android消息推送:第三方消息推送平台详细解析
前言 消息推送在Android开发中应用的场景是越来越多了,比如说电商产品进行活动宣传.资讯类产品进行新闻推送等等,如下图: 本文将介绍Android中实现消息推送的第三方推送的详细解决方案 阅读本文 ...
最新文章
- 联想小新air13pro重装系统_联想 小新Air 13 ProU盘装系统win7教程
- gz键盘增强小工具_这些不起眼的Mac小工具,能让你的Macbook效率倍增!
- phoenix 开发API系列 目录
- html5退出全屏触发的方法_好程序员web前端分享HTML5常见面试题集锦二
- android123 zhihuibeijing 新闻中心-新闻 页签 ViewPagerIndicator实现
- 《统计学》第八版贾俊平第五章概率与概率分布
- linux audit 服务,linux 的 audit 服務
- Win系统 - Win10 进入 BIOS 系统(非启动快捷键)
- Java 模板变量替换——字符串替换器
- 干支纪年法简便算法_电子工程师笔记,常用的C语言算法总结,值得转发收藏...
- abap 创建出口历程_走进SAP ERP的发展探索历程
- U盘制作启动盘后无法使用,显示无法格式化等信息
- 微软azure服务器配置,配置持续部署 - Azure App Service | Microsoft Docs
- php 支付宝支付 简书,PHP支付宝支付的代码分享(TP3.2框架)(一)
- php购买东西价格代码,利用ajax+php实现商品价格计算
- Linux下Android ADB驱动安装详解
- 爬虫python可以干嘛_python爬虫可以用来做什么?
- oTree学习教程(一)概念性概述
- 【饥荒mod制作吧第四篇】mod制作教程系列
- php cs fixer 怎么用,php代码格式化工具 php-cs-fixer的使用
热门文章
- c语言字符串输入输出函数总结
- 打印机中的废墨收集垫已到使用寿命怎么办
- oracle添加分区语句_oracle表分区增加分区
- QGraphicsView QGraphicsScene 增加任意点
- 基于LabVIEW的无线温度测控电路设计_温度传感器电路
- HP Designjet 800PS 日常维护
- Github 开源:高效好用的对象间属性拷贝工具 升讯威 Mapper:( Sheng.Mapper)
- cc150:实现一个算法来删除单链表中间的一个结点,只给出指向那个结点的指针
- python画图保存png图片_Python将numpy矩阵保存为PNG图片
- 2022河南青训联赛第(三)场