Android 消息推送

1.了解使客户端能够实时收到服务器端的方式:第一种是客户端使用Pull(拉)的方式,就是隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现。第二种就是 服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。这样,客户端就能自动的接收到消息。

2.几种常见的解决方案实现原理

1)轮询(pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息,但是轮询的频率太慢可能导致某些消息的延迟,太快则会大量消耗网络宽带和电池;

2)SMS(push)方式:通过拦截SMS消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受,需要依赖于运营商;

3)客户端和服务器端之间建立长久连接,这样就可以实现消息的及时性和实时性;

3.对于大量的数据推送,且不需要及时推送,则轮询比较适用。利用集成Service组件的类来进行定义、实现。

4.长期连接中第三方的消息推送方式,则适用于及时推送,数据量并不是很大的消息推送,因为消息推送需要依赖于第三方的服务器来进行转发,如果第三方的服务器奔溃则您的消息推送也会受到影响,可能这种情况发生的并不会多吧。对于第三方的消息推送方式我也有所研究,主要研究了极光消息推送和百度云消息推送。其实这两种方式是差不多的,都是自己封装的一个方法,进行消息推送,想要学习的可以到其官网上进行注册开发者账号进行研究,可以在官网上下载demo进行研究,因为方法已经封装好,用起来也不是很难,有意愿的可以进行一下研究,但是注意,该方式的消息推送需要依赖于第三方进行转发。

5.当然要想要安全与及时的进行消息推送,还是需要自己去进行相关协议的了解,自己封装方法来进行消息推送。一般可以使用的协议有:MOTT协议、XMPP协议。

1)MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。

2)XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。据说这个协议是一种比较合适的消息推送的协议,有意者也可以研究一下,本人小菜鸟也在研究中,但是还是没有什么头绪,纠结......

最后,说一下,可能有些人认为我说的都是一些废话,我只是想给那些和我一样的小菜鸟一个思路吧,这也是我研究后总结的。

你可能感兴趣的:(android,push,消息推送,pull)