`
zsg88
  • 浏览: 25385 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用androidpn来实现推送

 
阅读更多
公司做了一个手机软件需要及时通知用户. 本来想找个哥们做个c的长链接服务端,哪想这哥们找了个开源的linux下的c开发的chat服务端给我,还得自己研究文档,再做个用户关联接口把chat服务当消息中转,麻烦.  上网搜了一下看看有什么更合适的方案.发现有个开源的android push notification,简称androidpn. 正好公司的业务后端是java的,把androidpn融合在里面应该是一个不错的选择.

------------------------以下是网上摘操--------------------------

Androidpn在客户端集成了asmack。这样就可以很容易的简立一个和服务器端的基于xmpp协议的socket连接。Androidpn的客户端中,进行管理连接的类是XmppManager,它主要用来管理连接的信息,比如XMPP的端口、IP、登录的用户名密码,以及对连接的维护。为什么还有用户名和密码?这不得不提到XMPP的具体细节。整个服务器端和客户端的通信是基于一个session(会话)过程,会话开始,首先会指定服务器的端口号,然后把上述提到的信息发送到服务器端,怎么发送消息的呢?以<stream>根节点的方式开始传递,只有在服务器和客户端关闭的时候才会发送它的结束标记</stream>。客户端通过XMPP协议只用做的就是接收消息,而所有其它的操作都交给服务器,比如管理连接、消息保存等等,这样就很大程度的减轻了客户端的负担。那么客户端和服务器端的消息回应是如何实现的?如要通过一个ID来标识,具体细节可以去查看XMPP协议。

一旦注册绑定后,服务器端就和客户端建立了连接,客户端只用负责去接收消息。所以当我们应用Androidpn的时候,客户端会非常的简单。而在服务器端,Androidpn又做了什么呢?

服务器端的展示方面,androidpn主要用到的技术是Spring和Hibernate。

在服务器端的源码中一个org.androidpn.server.xmpp.net.Connection类,主要是代表一个服务器上的XMPP连接,注意只是一个,它可以确保在服务器关闭的时候,发送一个</stream>标记到客户端,告知连接断开,需重新连接。

org.androidpn.server.xmpp.session.SessionManager主要用户管理所有会话,比如连接断开,删除session以及建立连接,添加session等等。

而在管理Socket连接的时候,androidpn采用了MINA框架来进行管理,MINA的优点就是改变了我们传统的管理socket的方式,比如没建立一个socket开一个线程,而MINA可以实现多个线程管理N多个用户。在处理高并发的推送上无疑是有巨大的好处的。

合理的利用监听器来管理session,也是androidpn的优点。在安全性方面,制定了TLS(安全传输层)策略,并却采用了安全认证,这些方面都做的不错。

当然,不可避免的30秒钟的心跳包还是必不可少的。


---------------------------------------------------------

下载了服务端,服务器端解压开点击bin下的run.bat运行服务端.
下载客户端, 修改手机客户端的连接ip地址为电脑局域网的ip,编译安装apk到手机,客户端就一个很简单的activity,后台服务自动与服务端进行连接.

打开管理后台http://127.0.0.1:7070 看到有一个用户,那就是我的手机,点击notification给手机段发一条通知,Ok立即收到。

接下来就是把android完美的整合到现有的业务系统中去了。

花了一个下午的时间把后台修改成spring + hibernate + struts2 + tomcat能正常地跑起来了,经测试和手机连接正常发消息没有问题。


(ssh版本)其他地方的修改

(一)请修改  XmppServer  的start方法

屏蔽掉context = new ClassPathXmlApplicationContext("spring-config.xml");

改为使用ApplicationContextAware 接口中的

public void setApplicationContext(ApplicationContext context) throws BeansException

方法,获得ApplicationContext对象。

否则会启动了2个名为ioAcceptor的NioSocketAcceptor实例,可以查看log日志,在tomcat的log目录下的androidpn.log日志,浪费资源

而且在linux系统下会提示5552端口被占用

(二) <bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
init-method="bind" destroy-method="unbind">

修改成destroy-method="disponse">能快速关闭tomcat进程

(三)把用户系统融合到自己的应用中去,请修改org.androidpn.server.service.impl.UserServiceImpl
,使用自己系统的用户接口

(四)客户端自动注册使用的随机串,如果要使用自己系统的用户,客户端请修改org.androidpn.client.XmppManager 中的username和password

并用修改服务器端的用户身份验证类org.androidpn.server.xmpp.auth.AuthManager的public static AuthToken authenticate(String username, String token,
             String digest) throws UnauthenticatedException 方法


-----------------------------------

一直陆续有不少网友问我要androidpn整合ssh的源码,这个已经找不到了。不过稍微熟悉ssh的开发人员应该都会修改。

大家这么热情,我准备抽空用mina框架写一个简单功能版本的推送实现,方便大家修改

-----------------------------------
分享到:
评论
12 楼 riplmm 2013-10-23  
求spring + hibernate + struts2 + tomcat 推送的源码,非常感谢 657732581@qq.com
11 楼 lilinsjtu 2013-07-01  
初学者,求代码,305593103@qq.com
谢谢!
10 楼 lilinsjtu 2013-07-01  
初学者,求代码,305593103@qq.com
谢谢!
9 楼 duni_读你 2013-03-20  
大神,还有这个整合的代码吗,麻烦发给我一份了,1176403250@qq.com
8 楼 lfeii 2012-11-22  
求源码,411207792@qq.com
7 楼 lfeii 2012-11-22  
你好,求源码,感谢,感谢,非常感谢
6 楼 shaoli0554 2012-10-22  
请修改  XmppServer  的start方法

屏蔽掉context = new ClassPathXmlApplicationContext("spring-config.xml");

改为使用ApplicationContextAware 接口中的

public void setApplicationContext(ApplicationContext context) throws BeansException

方法,获得ApplicationContext对象。

否则会启动了2个名为ioAcceptor的NioSocketAcceptor实例,可以查看log日志,在tomcat的log目录下的androidpn.log日志,浪费资源

而且在linux系统下会提示5552端口被占用


这个具体怎么修改的?谢谢 方便的话发:shaoli0554@126.com
5 楼 aixiangct 2012-09-20  
aixiangct@163.com
4 楼 aixiangct 2012-09-20  
您好,求源码,非常感谢
3 楼 sunjunliangsunjun 2012-06-19  
2 楼 sunjunliangsunjun 2012-06-19  
我也要 一份     719257785@qq.com
1 楼 yuchangjiu 2012-06-04  
大神啊, 求开源SSH+tomcat源码,871212733@qq.com,THKS !

相关推荐

    用androidpn来实现推送

    ### 使用 AndroidPN 实现推送详解 #### 一、引言 在移动互联网时代,推送通知已成为提高用户活跃度和留存率的重要手段之一。对于Android应用而言,如何高效地实现服务器到客户端的消息推送成为了一个关键问题。...

    androidpn-client推送客户端

    AndroidPN客户端与服务器进行交互,通过建立持久连接来接收推送通知。当服务器有新消息时,会通过这个连接将消息推送到客户端,即使应用没有在前台运行也能接收到通知。 **主要功能组件:** 1. **连接管理器**:...

    androidpn服务器推送

    5. **Android客户端实现**:在Android手机端,开发者需要集成AndroidPN库,创建一个持久化的连接到服务器,并实现消息接收器来处理接收到的推送消息。此外,还需要处理网络变化、设备休眠等情况下的消息处理。 6. *...

    androidpn离线推送

    - GCM (Google Cloud Messaging) 或 FCM (Firebase Cloud Messaging):早期的AndroidPN可能基于GCM,但现在更倾向于使用FCM,这是Google提供的免费推送服务,可以实现跨平台的消息传递。 - 网络连接管理:考虑到设备...

    androidpn 消息推送客户端+服务器端

    总之,AndroidPN是一个强大的开源解决方案,它利用XMPP协议实现了Android设备的消息推送功能。理解其客户端和服务器端的运作机制,可以帮助开发者更有效地集成推送通知到自己的应用程序中。同时,熟悉XMPP协议和...

    androidpn 推送系统

    AndroidPN(Android Push Notification)是一种基于Android平台的推送通知服务,它...同时,随着技术的发展,如FCM等现代推送服务提供了更多功能和更好的性能,开发者也可以考虑使用这些更新的技术来替代AndroidPN。

    著名的AndroidPN消息推送客户端

    在AndroidPN客户端中,这一特性被用来实现在后台高效、可靠地推送通知到用户的设备。 AndroidPN客户端的设计目标是为开发者提供一个方便的工具,以便在他们的应用程序中集成远程推送通知功能,而无需持续连接到...

    androidpn消息推送

    开发者可以通过下载并研究这些代码来了解AndroidPN的工作原理,或者直接将其作为基础,在自己的项目中实现消息推送功能。 在实际开发中,除了理解AndroidPN的架构和工作流程外,还需要考虑以下几点: - 数据安全:...

    Androidpn推送增强版

    下面将详细介绍AndroidPN的服务端和客户端实现,以及如何利用它来实现Android设备上的推送功能。 一、AndroidPN服务端 AndroidPN服务端是整个推送系统的核心,负责接收应用程序发送的消息,并将这些消息推送到指定...

    androidpn-消息推送文档宣贯.pdf

    综上,AndroidPN通过XMPP协议实现高效可靠的消息推送服务,客户端和服务器端协同工作,保证了消息的实时性和准确性。服务器的模块化设计使得消息处理和推送更加灵活,客户端则通过智能的连接管理和消息解析,提供了...

    androidpn消息推送源码

    XMPP(Extensible Messaging and Presence Protocol)是一种实时通信协议,广泛应用于即时消息和在线状态的处理,它通过XML流进行数据传输,为开发者提供了灵活且强大的框架来实现服务器到设备的消息推送。...

    androidpn推送框架+文档

    androidpn为Android应用提供消息通知推送支持, 它本质上服务器端基于 Openfire,客户端基于 asmack,这二者都最 XMPP IM 开源实现里的二个基本组件,应该说 androidpn 只是把二者更多地结合起来用于做 Push的场景。...

    androidpn-client 0.5 推送

    AndroidPN客户端0.5版本的源码,提供了开发者直接用于实现推送功能的基础架构。 **一、AndroidPN服务端与客户端** 1. **服务端**:AndroidPN服务端主要负责接收应用服务器发送的推送消息,并将这些消息转发到注册...

    androidPN推送服务器

    综上所述,AndroidPN为开发者提供了一个自主可控的推送服务框架,通过配置MySQL和Apache Tomcat,开发者可以快速搭建起自己的推送服务器,从而实现与Android设备的实时通信。在实际项目中,可以根据需求进行功能扩展...

    Androidpn推送

    关于服务器端向Android客户端的推送,主要有三种方式:轮询,应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果...

    基于androidpn设计的android远程推送demo

    基于AndroidPN(Android Push Notification)设计的Android远程推送Demo,是实现这一功能的一种具体实践。AndroidPN是一个开源项目,专门用于在Android设备上实现Google Cloud Messaging (GCM)或Firebase Cloud ...

    AndroidPn推送

    AndroidPN(Android Push Notification)是针对Android平台设计的一种推送服务,它基于XMPP(Extensible Messaging and Presence Protocol)协议实现。XMPP是一种开放标准的即时通讯协议,广泛应用于聊天、协作和推...

    androidpn消息推送-tomcat版

    **AndroidPN消息推送-Tomcat版**是一种用于Android设备的消息推送系统,它利用XMPP协议实现了客户端与服务器之间的实时通讯。本系统分为客户端和服务端两大部分,采用Java语言编写,并结合了Asmack库与Openfire...

    【整理】解刨AndroidPN消息推送.pdf

    在这个过程中,AndroidPN(Android Push Notification)是其中一种流行的消息推送服务解决方案,通常应用于Android平台,但也可以跨平台使用。AndroidPN项目由韩国开发者SehwanNo开发,是一个开源的项目,支持消息推...

Global site tag (gtag.js) - Google Analytics