1、消息推送:
就是在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。推送技术通过自动传送信息给用户,来减少用于网络上搜索的时间。它根据用户的兴趣来搜索、过滤信息,并将其定期推给用户,帮助用户高效率地发掘有价值的信息。当我们开发需要和服务器交互的移动应用时,基本上都需要和服务器进行交互,包括上传数据到服务器,同时从服务器上获取数据。
2、常见的几种消息推送方式及优缺点:
(1)轮询(pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。
优点:实现简单、可控性强,部署硬件成本低。
缺点:实时性差。
(2)pushmail方式:通过拦截服务端消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受。
优点:实时性强。
缺点:费用高。
(3)G2MD服务:Google推出的云消息服务
优点:Google提供的服务、原生、简单,无需实现和部署服务端。
缺点:用户必须绑定Google账号,受限于Google,且Google在国内被墙掉了,通常不采用这种方式。
(4)XMPP协议:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。
优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,已有开源的Java版的开发实例androidpn。
缺点:协议较复杂、冗余、费流量、费电、部署服务器成本高。
(5)socket通信:客户端与服务器的长连接
优点:实时性强。
缺点:在实际开发中需要解决一些问题。
1、客户端如何持续保持与客户端的长连接
也就是心跳机制,在WIFI,2G,3G,4G环境下的心跳间隔,额外触发心跳的机制(切换网络环境,插入电源线,切换基站?)
心跳机制是影响APP耗电的一个问题
Android上的定时机制,AlarmManager和Timer的区别
2、服务端缓存离线客户端的消息机制
客户端难免会出现离线,登出的情况。在出现离线和登出的情况下,服务端应该如何缓存客户端的信息,缓存多少等。
3、服务器宕机后,重新启动后大量客户端同事连接客户端的问题。
现阶段通常使用的第三方推送平台:JPush极光推送,百度云推送。