前段时间,我们手上的项目需要进行android手机端的数据通信和推送。众所周知,目前安卓还没有一个固定完美和简略的框架,不像iphone。我是负责做这一块,刚开始的时候也是一头雾水,两眼发空。在网上疯狂的百度谷歌,浏览器里收藏了一堆的网页。不过经过半个月的努力钻研,总算是把androidpn这个东东完美整合到自己的项目中。
好吧,废话不多说了。
我是实用主义者,关于androidpn的技术核心,所用技术以及具体的框架结构之类的,大家可以百度,一抓一大把。
我前期主要是看以下两篇日志。
第一篇,关于下载androidpn服务端和客户端,并且实现第一个demo。这一块web推送的具体步骤,这篇日志里写的非常详细。
http://www.devdiv.com/thread-101586-1-1.html
需要补充一句的就是,这里下载的server端不是tomcat版本的,而是jetty框架。需要tomcat版本的,往下看。
第二篇,关于将server端转化为tomcat版本,并且实现服务端重启后,客户端自动连接。
http://www.iteye.com/topic/1117043#2266007
有兴趣的朋友也可以看看这哥们其他相关博文。他从理论和实际结合上分析的非常棒。
基本上,我就是靠这两篇日志,一点一滴的摸索着,并且将项目完成的。具体的理论我不再追诉,就说说我遇到的问题以及解决办法吧。
首先,基础中的基础,就是按照第一篇日志中所说,使用模拟器完成web推送。这一块非常简单,按照第一篇去做完全可行,可能出错的地方就是你忘记更改配置文件了。
后来我下载了第二篇日志中博主提供的tomcat版本服务端,放在自己本机tomcat下,并且启动。用模拟器去测试发现无法推送,配置文件也没有错。检查后发现,原来自己tomcat的端口是8080,而server中配置的是7070。只要打开config.properties,修改admin.console.port=端口号,即可。
再接着,用同一个局域网内其他机子的客户端模拟器进行测试,只要将androidpn.properties中的xmppHost=服务端所在内网IP就可以啦。比如192.168.1.150。
用真机测试,其实和模拟器没啥区别,只要配置文件不写错,原则是不会出问题的。但是我测试的时候,还是出现无法推送成功的问题。仔细检查后,原因有二。
1.客户端android版本太低,换个android4.0版本就可以。貌似是不兼容低版本。
2.真机上其他的应用中,也有应用到这个androidpn的。其中,在androidpn.properties中,apikey默认是123456789。因为那个应用和我自己本机都选择了默认的,所以我将自己这里的apikey改掉了。切记!这里有一点需要注意的,客户端androidpn.properties中更改了apikey,服务端config.properties也要随之修改。!!
OK,基本上单独的web推送就完成了。
接下来就是整合到自己项目中,也就是从自己项目后台将数据推送到客户端,至于androidpn的server端,则作为中间的桥梁。
这里需要注意一点,androidpn会在你本地数据库中新增一个表apn_user。如果你本地数据库有权限,拒绝的话,你最好自己先手动增加这么一张表。
首先,我单独启动一个新的tomcat,将server端部署到这下面,修改配置文件config。properties,jdbc.properties。jdbc.properties这个文件是配置你本地数据库的参数的,不能有错。启动后,简单测试成功,在自己项目中使用http协议将数据POST到server端这个org.androidpn.server.console.controller.NotificationController类的send方法中。具体参数名称及获取参数的代码,可以修改server端。
在这里插一句,不论时间多么紧张,至少你得追一边代码,尤其这个类。
代码写好后可以执行,断点跟踪下,只要你代码正确,配置文件没错,是可以正常推送的。
基本上,写到这里的话,应该可以满足项目需求了。如果你还需要将哪些用户在线的功能整合到你自己项目中。那你就得自己跟踪下代码了。
我项目做到这里,基本上都是在windows环境下。将项目部署到linux环境下,又出问题了。
路径问题比较容易坚决,按照后台日志中提示的地方,将路径修改下。
关键是在linux下重启server端,会发现报错,5222端口被占用。因为时间限制,能力有限,没办法修改代码,只能每次重启时,都先用命令将5222端口杀掉。
OK。基本上我写的就是这么多,还有些小细节的问题,也来不及写。以后又时间再和大家分享吧。我反正是觉得,这个东西其实也不是特别难,只要花费时间,一点点的去看,会弄懂的。
还有一点啊,如果大家是整合到自己项目中,最好把后台NotificationController对应的jsp给替换掉,免得被人登陆上,随意群发
分享到:
相关推荐
AndroidPN环境搭建 本文件真对网上的环境搭建源网站无法登陆设立 <坏掉了/>http://sourceforge.net/projects/androidpn/ </坏掉了> 说明: http://www.cnblogs.com/devxiaobai/archive/2011/07/09/2101794.html ...
在Android平台上,AndroidPN(Android Push Notification)是一个用于实现远程推送通知服务的开源项目。它允许开发者通过服务器向Android设备发送消息,即使...同时,这也是一种学习和研究推送服务工作原理的好方法。
AndroidPN(Android Push Notification)是Android平台上的一种消息推送服务,旨在帮助开发者实现在应用程序后台时仍然能够接收服务器发送的通知或数据。在AndroidPN服务器推送的实现中,有以下几个关键知识点: 1....
开发者可能需要深入研究这些文件,以理解整个推送系统的架构和流程。 此外,修复的bug可能涉及到网络连接稳定性、内存泄漏、异常处理等问题,这些都是移动应用开发中常见的性能和稳定性挑战。修复这些bug表明修改后...
这里我们关注的是一个特定的配置——"androidpn tomcat + oracle 版本"。这个配置涉及到AndroidPN服务在Tomcat应用服务器上运行,并与Oracle数据库进行集成。让我们深入探讨这个主题,了解其中涉及的关键知识点。 ...
AndroidPN(Android Push Notification)是一个开源项目,旨在为Android应用程序提供简单、高效的后台推送通知服务。这个项目通常需要与服务器端的组件配合工作,其中Tomcat作为常用的Java应用服务器,常常被用于...
Androidpn客户端 和服务端源码下载,实现了消息推送。具体使用方法可百度。
AndroidPN(Android Push Notification)是一种基于XMPP(Extensible Messaging and Presence Protocol)协议的开源消息推送客户端,主要用于Android平台。XMPP是一种开放标准的即时通讯协议,它允许应用程序通过...
在Android开发中,AndroidPN(Android Push Notification)是一种常见的服务,用于实现在服务器端向Android设备推送消息。本文将深入探讨如何将AndroidPN-server与Tomcat应用服务器进行整合,以便在MyEclipse环境中...
将androidpn集成到我们平时开发的javaee中,直接启动tomcat就可以启动xmpp服务,不需要另外部署androidpn。 注释:项目有点大,所以没有上传jar包,可以直接使用项目中的maven下载所需jar文件
"AndroidPN—Demo"是一个基于Android平台的推送通知服务示例项目,主要展示了如何实现设备的登录、连接以及接收远程推送消息的功能。...开发者可以通过研究这个示例来学习如何在自己的应用中集成类似功能。
AndroidPN(Android Push Notifications)是专门为Android平台设计的一个推送通知服务。这个源码包包含了在Eclipse集成开发环境中运行的项目,以及与Tomcat服务器配合使用的部分。在深入讲解相关知识点之前,先来...
"AndroidPN-client-0.5.0"是一个针对Android平台的Push Notification服务的客户端库,主要功能是为了实现设备与服务器之间的即时通信。Push Notification服务在移动应用开发中扮演着重要角色,它允许服务器向已安装...
AndroidPN(Android Push Notification)是专门为Android平台设计的一种推送服务,它允许服务器向移动设备发送实时消息,从而提高应用程序的互动性和效率。AndroidPN客户端代码是实现这一功能的关键部分,它处理与...
AndroidPN,全称为Android Push Notification,是一个开源项目,旨在为Android设备提供实时的推送通知服务。这个服务允许服务器向已连接的Android设备发送消息,即使应用程序在后台运行或完全关闭时也能接收到这些...
androidpn 的客户端和服务器端源码. 使用说明: 解压后得到两个压缩包: androidpn-client.zip和androidpn-server-0.5.0-bin.zip, 解压两个包,Eclipse导入client,配置好目标平台,打开raw/androidpn.properties...
AndroidPN(Android Push Notification)客户端是一款专门为Android操作系统设计的应用程序,用于实现远程服务器向设备推送通知的功能。在移动应用开发中,推送通知是一项至关重要的特性,它允许应用程序在后台状态...
AndroidPN,全称为Android Push Notification,是一个开源的Android平台上的推送通知服务,它允许服务器向设备发送消息,即使应用程序在后台或完全关闭时也是如此。在本文中,我们将深入探讨如何解决AndroidPN服务端...