本文介绍AndroidPn项目实现推送的使用过程。
在Android中实现信息推送,其中一个比较成熟的解决方案便是使用XMPP协议实现。而AndroidPn项目就是使用XMPP协议实现信息推送的一个开源项目。在这里给大家介绍其使用过程。
Apndroid Push Notification的特点:
快速集成:提供一种比C2DM更加快捷的使用方式,避免各种限制.
无需架设服务器:通过使用"云服务",减少额外服务器负担.
可以同时推送消息到网站页面,android 手机
耗电少,占用流量少.
具体配置过程:
首先, 我们需要下载androidpn-client-0.5.0.zip和androidpn-server-0.5.0-bin.zip。
下载地址:http://sourceforge.net/projects/androidpn/
解压两个包,Eclipse导入client,配置好目标平台,打开raw/androidpn.properties文件,配置客户端程序。
1. 如果是模拟器来运行客户端程序,把xmppHost配置成10.0.2.2[模拟器把10.0.2.2认为是所在主机的地址,127.0.0.1是模拟器本身的回环地址,10.0.2.1表示网关地址,10.0.2.3表示DNS地址,10.0.2.15表示目标设备的网络地址],关于模拟器的详细信息,大家可参阅相关资料,这里不再详述.
2. 如果是用手机测试,xmppHost则需要设置为服务器机器的ip地址(确保手机网络和电脑主机网络在同一局域网).
例如 你的电脑和android手机 都通过同一个无线路由器wifi上网, 电脑的ip地址为 192.168.19.173 这个时候 需要把这个值修改为 xmppHost=192.168.19.1 或是电脑的IP地址(192.168.19.173),就可以在手机上使用了.
3. 如果是不在同一个局域网的真机测试,我们需要将这个值设置为服务器的IP地址。
具体配置如下图所示:
我的电脑IP是:192.168.19.173
服务器运行主界面:
推送信息:
测试结果如下图:
测试通过。
其他使用过程介绍:
当然了,以上是在自己的服务器上配置并实现信息推送,如果大家想省事的话,在这里给大家推荐个网址, 可以更轻松地实现推送,缺点是需要通过别人的服务器,关于这点,你懂的。
网址: http://www.push-notification.org/
另外需要注意的问题:
在导入androidpn-client-0.5.0工程的时候,报了以下错误:
04-24 21:11:35.042: E/AndroidRuntime(11900): java.lang.NoClassDefFoundError: org.androidpn.client.PersistentConnectionListener 04-24 21:11:35.042: E/AndroidRuntime(11900): at org.androidpn.client.XmppManager.<init>(XmppManager.java:98) 04-24 21:11:35.042: E/AndroidRuntime(11900): at org.androidpn.client.NotificationService.onCreate(NotificationService.java:115) 04-24 21:11:35.042: E/AndroidRuntime(11900): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2261) 04-24 21:11:35.042: E/AndroidRuntime(11900): at android.app.ActivityThread.access$1600(ActivityThread.java:126) 04-24 21:11:35.042: E/AndroidRuntime(11900): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1209) 04-24 21:11:35.042: E/AndroidRuntime(11900): at android.os.Handler.dispatchMessage(Handler.java:99) 04-24 21:11:35.042: E/AndroidRuntime(11900): at android.os.Looper.loop(Looper.java:137) 04-24 21:11:35.042: E/AndroidRuntime(11900): at android.app.ActivityThread.main(ActivityThread.java:4482) 04-24 21:11:35.042: E/AndroidRuntime(11900): at java.lang.reflect.Method.invokeNative(Native Method) 04-24 21:11:35.042: E/AndroidRuntime(11900): at java.lang.reflect.Method.invoke(Method.java:511) 04-24 21:11:35.042: E/AndroidRuntime(11900): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 04-24 21:11:35.042: E/AndroidRuntime(11900): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 04-24 21:11:35.042: E/AndroidRuntime(11900): at dalvik.system.NativeStart.main(Native Method)
针对该问题,需要改动的是:将工程中第三方jar包所在的lib文件夹名(这里为lib)改为libs, 就可以了。