Android—消息推送机制

Android—消息推送机制,第1张

概述知识点:长连接与短连接端内与端外推送通知与透传消息服务保活(心跳机制)长连接和短连接消息推送需要客户端与服务端进行连接,因此分为两种方式长连接,在TCP层握手成功后,不立即断开连接,并在此连接的基础上进行多次消息(包括心跳)交互,直至连接的任意一方主动断开连接,此过程称为一 知识点:长连接与短连接端内与端外推送通知与透传消息服务保活(心跳机制)长连接和短连接

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

长连接,在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,直接把消息通过回调方法发送给应用,不做任何处理,应用可以自己选择如何展示,在通知栏或者在应用右上角显示红点等方式。通知消息是指在设备接收到消息之后,直接d出标准安卓通知栏通知。

如果自己没有实现端内推送,也可以全部都通过第三方推送来实现,不过应该采用透传的方式。

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—消息推送机制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1052686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)