来自:http://download.csdn.net/download/johnny901114/4410546
查阅了一些网上关于Android上实现推送的文章 , 常用的实现方法有:
1.使用android默认C2DM框架
2. APP 保持轮循
3. 采用XMPP协议,自己搭建推送服务器
下面介绍一下自己在ubuntu11.04下搭建XMPP推送服务器的方法:
1. 下载Android Push Notification 相关包,包括
androidpn-server-0.5.0-bin.zip
androidpn-demoapp-0.5.0.zip
2. 安装apache2 ,eclipse,android SDK
3. 启动apache服务,并且停止iptables
手动添加iptables规则
- socol@socol:~$ sudo vim /usr/bin/iptables-stop.sh
- socol@socol:~$ sudo chmod 750 /usr/bin/iptables-stop.sh
- socol@socol:~$ sudo chown root:root /usr/bin/iptables-stop.sh
内容如下:
- #! /bin/sh
- # 清空 filter 表格規則(無指定表格,則為 filter 表格)
- iptables -X
- # 清空 nat 表格規則
- iptables -t nat -F
- iptables -t nat -X
- # 清空 mangle 表格規則
- iptables -t mangle -F
- iptables -t mangle -X
- # 指定 filter 表格預設規則
- # INPUT、FORWARD、OUTPUT 皆為放行
- iptables -P INPUT ACCEPT
- iptables -P FORWARD ACCEPT
- iptables -P OUTPUT ACCEPT
清除防火墙:
- socol@socol:~$ sudo /usr/bin/iptables-stop.sh
4. 运行解压后的androidpn-server
- socol@socol:~/下载/androidpn-server-0.5.0/bin$ mkdir ../logs
- socol@socol:~/下载/androidpn-server-0.5.0/bin$ ./run.sh
5. 在firefox中输入127.0.0.1:7070,显示设备和推送管理页面
6. 将androidpn-demoapp导入eclipse中
运行后出现错误:
- W/Cannot connect to server.( 1052): 0
- W/System.err( 1052): XMPPError connecting to 127.0.0.1:5222.: remote-server-error(502) XMPPError connecting to 127.0.0.1:5222.
- W/System.err( 1052): -- caused by: java.net.ConnectException: /127.0.0.1:5222 - Connection refused
根据提示 ,修改androidpn-demoapp-0.5.0/res/raw/androidpn.properties:
- apiKey=1234567890
- xmppHost=10.0.2.2
- xmppPort=5222
7. 在firefox中发送消息:
8. 模拟器/手机上接受到消息: