知识点:

  • 长连接与短连接
  • 端内与端外推送
  • 通知与透传消息
  • 服务保活(心跳机制)

长连接和短连接

消息推送需要客户端与服务端进行连接,因此分为两种方式

  • 长连接,在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端实现消息推送的几种方式

  1. 轮询:客户端定时向服务器请求数据。伪推送。缺点:费电,费流量。

  2. 拦截短信消息。服务器需要向客户端发通知时,发送一条短信,客户端收到特定短信之后,先获取信息,然后拦截短信。伪推送。缺点:贵而且短信可能被安全软件拦截。

  3. 持久连接(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—消息推送机制相关推荐

  1. Android消息推送机制

    1.推送方式基础知识: 当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如<地震应急通>就需要及时获取服务器上最新的地震信息.要获取服务器 上不定时更新的信息一般 ...

  2. 移动手机消息推送机制

    由于公司要做一个android的消息推送功能,让我进行了一个调研,发现网上没有一个集中说明的地方,自己在网上搜罗了一些资料并且自己总结了一下. 对于消息的提醒方式可以分为四种:固定窗口.弹出窗口.手机 ...

  3. android开发 app消息提醒功能,Android中利用App实现消息推送机制的代码

    1.消息推送机制 服务器器端需要变被动为主动,通知客户一些开发商认为重要的信息,无论应用程序是否正在运行或者关闭. 我想到了一句话:don't call me,i will call you! qq今 ...

  4. 国内APP消息推送机制以及微信消息延迟问题剖析

    转自:https://club.huawei.com/thread-15878044-1-1.html 一.前言 随着安卓手机以及QQ/微信/支付宝/滴滴出行/美图外卖等一大批移动通信/移动消费应用的 ...

  5. Android消息推送 解决方案

    前言 鉴于现在运营需求的增强,消息推送在Android开发中应用的场景是十分常见 如电商的活动宣传.资讯类产品进行新闻推送等等 推送消息截图 今天,我将全面介绍Android中实现消息推送的7种主流解 ...

  6. android消息推送demo

    android消息推送demo 1.消息推送机制  服务器器端需要变被动为主动,通知客户一些开发商认为重要的信息,无论应用程序是否正在运行或者关闭.  我想到了一句话:don't call me,i ...

  7. 友盟小米收不到推送消息_一个轻量级、可插拔的Android消息推送框架。一键集成推送(极光推送、友盟推送、华为、小米推送等)...

    XPush 一个轻量级.可插拔的Android消息推送框架.一键集成推送(极光推送.友盟推送.华为.小米推送等),提供有效的保活机制,支持推送的拓展,充分解耦推送和业务逻辑,解放你的双手! 在提iss ...

  8. Android消息推送:手把手教你集成小米推送

    <script type="text/javascript" src="http://static.blog.csdn.net/scripts/category.j ...

  9. Android消息推送:第三方消息推送平台详细解析

    前言 消息推送在Android开发中应用的场景是越来越多了,比如说电商产品进行活动宣传.资讯类产品进行新闻推送等等,如下图: 本文将介绍Android中实现消息推送的第三方推送的详细解决方案 阅读本文 ...

最新文章

  1. 联想小新air13pro重装系统_联想 小新Air 13 ProU盘装系统win7教程
  2. gz键盘增强小工具_这些不起眼的Mac小工具,能让你的Macbook效率倍增!
  3. phoenix 开发API系列 目录
  4. html5退出全屏触发的方法_好程序员web前端分享HTML5常见面试题集锦二
  5. android123 zhihuibeijing 新闻中心-新闻 页签 ViewPagerIndicator实现
  6. 《统计学》第八版贾俊平第五章概率与概率分布
  7. linux audit 服务,linux 的 audit 服務
  8. Win系统 - Win10 进入 BIOS 系统(非启动快捷键)
  9. Java 模板变量替换——字符串替换器
  10. 干支纪年法简便算法_电子工程师笔记,常用的C语言算法总结,值得转发收藏...
  11. abap 创建出口历程_走进SAP ERP的发展探索历程
  12. U盘制作启动盘后无法使用,显示无法格式化等信息
  13. 微软azure服务器配置,配置持续部署 - Azure App Service | Microsoft Docs
  14. php 支付宝支付 简书,PHP支付宝支付的代码分享(TP3.2框架)(一)
  15. php购买东西价格代码,利用ajax+php实现商品价格计算
  16. Linux下Android ADB驱动安装详解
  17. 爬虫python可以干嘛_python爬虫可以用来做什么?
  18. oTree学习教程(一)概念性概述
  19. 【饥荒mod制作吧第四篇】mod制作教程系列
  20. php cs fixer 怎么用,php代码格式化工具 php-cs-fixer的使用

热门文章

  1. c语言字符串输入输出函数总结
  2. 打印机中的废墨收集垫已到使用寿命怎么办
  3. oracle添加分区语句_oracle表分区增加分区
  4. QGraphicsView QGraphicsScene 增加任意点
  5. 基于LabVIEW的无线温度测控电路设计_温度传感器电路
  6. HP Designjet 800PS 日常维护
  7. Github 开源:高效好用的对象间属性拷贝工具 升讯威 Mapper:( Sheng.Mapper)
  8. cc150:实现一个算法来删除单链表中间的一个结点,只给出指向那个结点的指针
  9. python画图保存png图片_Python将numpy矩阵保存为PNG图片
  10. 2022河南青训联赛第(三)场