关于服务器端向Android
客
户端的推送,主要有三种方式:轮询,应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队
等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池;SMS(通过发送短信并解析短信内容来获取服务
器端的指令),这个出现的问题是很难找到免费的网关来发送短信;最后就是持久连接,主要是Socket通讯,这个解决了性能问题,但是耗电问题依旧没能解
决。
在
这里,我们主要介绍的是第三种,用持久连接的方式来进行推送。现在比较成熟的及时消息传递协议共有四种,而无疑最为主流就是XMPP协议,它是一种基于
XML的传递协议,具有很强的灵活性和可扩展性。它的特点是将复杂性从客户端转移到了服务器端。在网上可以找到很多的XMPP资料,这里就不在赘述了,不
然越扯越多。总之,XMPP主要显著的优点主要有以下几个方面:
1、 分布式 任何人都可以运行自己的XMPP服务器,它没有主服务器
2、 安全性很高。使用SASL及TLS等技术的可靠安全性
3、 开发性 它是开源的,易于进行学习和了解
4、 跨平台 毋庸置疑,使用的XML进行传输的
说完优点,我们言归正传,基于XMPP协议的java开发有一个开源框架,那就是smack,它主要封装了一些XMPP的实现。而如果把它直接用在Android上是不行的,因为android
缺
少了一些java的类库,于是一个改进版的asmack诞生了,它是专门为android而改进的android
smack。而另外一个开源框架的诞生,则是对在引用smack的基础上实现和服务器端的持久连接,以实现服务器对客户端的推送,那就是android
push notification,简称androidpn。
Androidpn
在客户端集成了asmack。这样就可以很容易的简立一个和服务器端的基于xmpp协议的socket连接。Androidpn的客户端中,进行管理连接
的类是XmppManager,它主要用来管理连接的信息,比如XMPP的端口、IP、登录的用户名密码,以及对连接的维护。为什么还有用户名和密码?这
不得不提到XMPP的具体细节。整个服务器端和客户端的通信是基于一个session(会话)过程,会话开始,首先会指定服务器的端口号,然后把上述提到
的信息发送到服务器端,怎么发送消息的呢?以根节点的方式开始传递,只有在服务器和客户端关闭的时候才会发送它的结束标记。客户端通过XMPP协议只用做
的就是接收消息,而所有其它的操作都交给服务器,比如管理连接、消息保存等等,这样就很大程度的减轻了客户端的负担。那么客户端和服务器端的消息回应是如
何实现的?如要通过一个ID来标识,具体细节可以去查看XMPP协议。
一旦注册绑定后,服务器端就和客户端建立了连接,客户端只用负责去接收消息。所以当我们应用Androidpn的时候,客户端会非常的简单。而在服务器端,Androidpn又做了什么呢?
服务器端的展示方面,androidpn主要用到的技术是Spring和Hibernate。主要是用来展示用户状态和发送信息用的,如下图:
这
方面的技术已经比较成熟,就不再细说了,主要要说的还是XMPP的管理。在服务器端的源码中一个
org.androidpn.server.xmpp.net.Connection类,主要是代表一个服务器上的XMPP连接,注意只是一个,它可以确
保在服务器关闭的时候,发送一个标记到客户端,告知连接断开,需重新连接。
org.androidpn.server.xmpp.session.SessionManager主要用户管理所有会话,比如连接断开,删除session以及建立连接,添加session等等。
而
在管理Socket连接的时候,androidpn采用了MINA框架来进行管理,MINA的优点就是改变了我们传统的管理socket的方式,比如没建
立一个socket开一个线程,而MINA可以实现多个线程管理N多个用户。在处理高并发的推送上无疑是有巨大的好处的。
合理的利用监听器来管理session,也是androidpn的优点。在安全性方面,制定了TLS(安全传输层)策略,并却采用了安全认证,这些方面都做的不错。
当然,不可避免的30秒钟的心跳包还是必不可少的。
总
之,用Androidpn好处有以下方面:采用完全开放的XMPP协议进行数据传输(QQ,MSN,GTalk等都是采用的这种协议);良好的框架支持
(专门为android
而产生的推送框架asmack,以及很好的管理socket的框架MINA,都是很成熟的产品);完全开放的源代码(我们可以在androidpn的基础
上进行修改,来满足我们的任何需求变更);大大的减少了客户端的代码,降低了android的开发难度。缺点不言而喻,使用了太多的框架,如果想要改一些
具体的实现,可能会迁移发动全身。不过如果你个懒人的话,完全满足你的需求了。
最
后是我整理的androidpn的源码,完全可以使用。原来的服务器端用的jetty框架来代替tomcat的,我把它又重新整合到了tomcat下,可
以完美的和你的服务器端融合。懒人们,来吧~~由于文件过大,所以用了外连~~喜欢的就去下载吧。。只需要改下client的raw文件夹下的ip地址就
可以运行。。androidpn下载地址
分享到:
相关推荐
AndroidPN(Android Push Notification)客户端是一款专门为Android操作系统设计的应用程序,用于实现远程服务器向设备推送通知的功能。在移动应用开发中,推送通知是一项至关重要的特性,它允许应用程序在后台状态...
5. **Android客户端实现**:在Android手机端,开发者需要集成AndroidPN库,创建一个持久化的连接到服务器,并实现消息接收器来处理接收到的推送消息。此外,还需要处理网络变化、设备休眠等情况下的消息处理。 6. *...
- GCM (Google Cloud Messaging) 或 FCM (Firebase Cloud Messaging):早期的AndroidPN可能基于GCM,但现在更倾向于使用FCM,这是Google提供的免费推送服务,可以实现跨平台的消息传递。 - 网络连接管理:考虑到设备...
总之,AndroidPN是一个强大的开源解决方案,它利用XMPP协议实现了Android设备的消息推送功能。理解其客户端和服务器端的运作机制,可以帮助开发者更有效地集成推送通知到自己的应用程序中。同时,熟悉XMPP协议和...
AndroidPN(Android Push Notification)是一种基于Android平台的推送通知服务,它...同时,随着技术的发展,如FCM等现代推送服务提供了更多功能和更好的性能,开发者也可以考虑使用这些更新的技术来替代AndroidPN。
在AndroidPN客户端中,这一特性被用来实现在后台高效、可靠地推送通知到用户的设备。 AndroidPN客户端的设计目标是为开发者提供一个方便的工具,以便在他们的应用程序中集成远程推送通知功能,而无需持续连接到...
开发者可以通过下载并研究这些代码来了解AndroidPN的工作原理,或者直接将其作为基础,在自己的项目中实现消息推送功能。 在实际开发中,除了理解AndroidPN的架构和工作流程外,还需要考虑以下几点: - 数据安全:...
下面将详细介绍AndroidPN的服务端和客户端实现,以及如何利用它来实现Android设备上的推送功能。 一、AndroidPN服务端 AndroidPN服务端是整个推送系统的核心,负责接收应用程序发送的消息,并将这些消息推送到指定...
综上,AndroidPN通过XMPP协议实现高效可靠的消息推送服务,客户端和服务器端协同工作,保证了消息的实时性和准确性。服务器的模块化设计使得消息处理和推送更加灵活,客户端则通过智能的连接管理和消息解析,提供了...
androidpn为Android应用提供消息通知推送支持, 它本质上服务器端基于 Openfire,客户端基于 asmack,这二者都最 XMPP IM 开源实现里的二个基本组件,应该说 androidpn 只是把二者更多地结合起来用于做 Push的场景。...
XMPP(Extensible Messaging and Presence Protocol)是一种实时通信协议,广泛应用于即时消息和在线状态的处理,它通过XML流进行数据传输,为开发者提供了灵活且强大的框架来实现服务器到设备的消息推送。...
AndroidPN客户端0.5版本的源码,提供了开发者直接用于实现推送功能的基础架构。 **一、AndroidPN服务端与客户端** 1. **服务端**:AndroidPN服务端主要负责接收应用服务器发送的推送消息,并将这些消息转发到注册...
在这里,我们主要介绍的是第三种,用持久连接的方式来进行推送。现在比较成熟的及时消息传递协议共有四种,而无疑最为主流就是XMPP协议,它是一种基于XML的传递协议,具有很强的灵活性和可扩展性。它的特点是将复杂...
综上所述,AndroidPN为开发者提供了一个自主可控的推送服务框架,通过配置MySQL和Apache Tomcat,开发者可以快速搭建起自己的推送服务器,从而实现与Android设备的实时通信。在实际项目中,可以根据需求进行功能扩展...
基于AndroidPN(Android Push Notification)设计的Android远程推送Demo,是实现这一功能的一种具体实践。AndroidPN是一个开源项目,专门用于在Android设备上实现Google Cloud Messaging (GCM)或Firebase Cloud ...
AndroidPN(Android Push Notification)是针对Android平台设计的一种推送服务,它基于XMPP(Extensible Messaging and Presence Protocol)协议实现。XMPP是一种开放标准的即时通讯协议,广泛应用于聊天、协作和推...
**AndroidPN消息推送-Tomcat版**是一种用于Android设备的消息推送系统,它利用XMPP协议实现了客户端与服务器之间的实时通讯。本系统分为客户端和服务端两大部分,采用Java语言编写,并结合了Asmack库与Openfire...
《AndroidPN:构建高效的消息推送服务器》 在移动应用开发中,实时消息推送是一项至关重要的功能,它使得应用能够及时地向用户发送通知,提升用户体验。AndroidPN(Android Push Notification)是一个专门针对...