知识点:
- 长连接与短连接
- 端内与端外推送
- 通知与透传消息
- 服务保活(心跳机制)
长连接和短连接
消息推送需要客户端与服务端进行连接,因此分为两种方式
-
长连接,在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)方式:客户端和服务器之间建立长久连接。真正的推送。
关于服务保活,为什么长连接还需要保活,就是因为安卓8.0后Service后台服务随时可能被干掉,还有TCP在一段时间内没有消息传递就会断开连接等等,就不在此展开。
关于MQTT知识:
https://www.runoob.com/w3cnote/mqtt-intro.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。