背景:前两天需要APP推送功能,并且不能用云推送,如极光啊、百度云推等等等等。所以无奈之下,百度搜索确定方案,基于Apache的mina框架的开源项目Androidpn,决定采用到项目中。
一、首先需要下载例子看看效果,源码项目CSDN都有,分服务端程序和移动端程序。
1:服务器端,将项目导入到MyEclipse中,项目名称为Androidpn-tomcat,如下图:
导入成功后,需要修改1个地方:
1:jdbc.properties文件,修改为你测试的mysql中的数据库test,这个库中只有一张表apn_user,在服务第一次启动时会自动创建这张表。如下图:
好了,至此服务器端就可以启动了。
2:客户端
将客户端程序导入到adt中,项目名称为android-client,如下图:
需要修改的地方:是res\raw\androidpn.properties文件,将 xmpphost修改为你的服务器IP,默认端口为5222,apikey和服务端resource文件夹下的config.properties里的apiKey对应。
3:运行
运行客户端后,会和服务器进行连接,你会看到用户表中插入了一条记录,如下图:
再通过localhost:8080查看控制台信息,会有4个tab页,通过最后一个tab可以发送测试消息到手机。到此为止,demo测试通过,现在要将推送服务集成到自己的项目中去,说的简单一点就是把测试用户表改为自己系统里对应的用户表。
先看一下效果:
发送推送消息测试:
在客户端看效果:
好了,现在说下需要修改服务器代码:
1:jsdb里改为自己的数据库连接
2:修改hibernate映射对象user,在org.androidpn.server.model包下,映射为你自己的user对象
3:修改web-info\page下的jsp,将其中的${user.username}等改为user.对应的字段
4:修改hibernate.cfg.xml文件,我用的是oracle数据库,所以要在里面加上两句
<property name="dialect">
org.hibernate.dialect.OracleDialect
</property>
5:我用的是myeclipse,有一个jsp标签版本问题,刷新后台控制台页面后会报错,删除lib下的jstl-1.1.2.jar就可以了
6:修改org.androidpn.server.dao.hibernate包下的UserDaoHibernate.java文件,修改 getUserByUsername方法,
将语句修改为你自己系统的。
修改完服务端后,修改客户端:
1:修改org.androidpn.client下的XmppManager.java文件,客户端会从sharedPrefs中获取用户名,这里修改为你自己的真是用户名和密码就可以了。
完成以上修改后,就可以初步实现推送集成啦。