研究Androidpn

根据Androidpn提供的DEMO框架,从中理出了最简单的连接和接收推送的一个DEMO.

package com.test.pn;

import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.ConnectionListener;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketIDFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.Registration;
import org.jivesoftware.smack.provider.IQProvider;
import org.jivesoftware.smack.provider.ProviderManager;
import org.xmlpull.v1.XmlPullParser;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class NotificationService extends Service{

	public void onCreate() {
		ConnectionConfiguration connConfig = new ConnectionConfiguration(
                "10.0.2.2", 5222);
		connConfig.setSecurityMode(SecurityMode.required);
        connConfig.setSASLAuthenticationEnabled(false);
        connConfig.setCompressionEnabled(false);
		Connection connection = new XMPPConnection(connConfig);
		try {
			connection.connect();
			ProviderManager.getInstance().addIQProvider("notification",
                    "androidpn:iq:notification",
                    new IQProvider(){
						public IQ parseIQ(XmlPullParser parse) throws Exception {
							Log.i("接收", "接收到消息......");
							return null;
						}
			});
			Registration registration = new Registration();
			PacketFilter packetFilter = new AndFilter(new PacketIDFilter(
                    registration.getPacketID()), new PacketTypeFilter(
                    IQ.class));
			PacketListener packetListener = new PacketListener(){
				public void processPacket(Packet arg0) {
					
				}				
			};
			connection.addPacketListener(packetListener, packetFilter);
			registration.setType(IQ.Type.SET);
			registration.addAttribute("username", "12345");
            registration.addAttribute("password", "12345");
            connection.sendPacket(registration);
			connection.login("12345", "12345", "AndroidpnClient");
			connection.addConnectionListener(new ConnectionListener(){
				public void connectionClosed() {
					
				}

				public void connectionClosedOnError(Exception arg0) {
					
				}

				public void reconnectingIn(int arg0) {
					
				}

				public void reconnectionFailed(Exception arg0) {
					
				}

				public void reconnectionSuccessful() {
					
				}				
			});
		} catch (XMPPException e) {
			e.printStackTrace();
		}
		super.onCreate();
	}

	public void onDestroy() {
		super.onDestroy();
	}

	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
	}

	public IBinder onBind(Intent intent) {
		return null;
	}
}

再附上所用到的资源:

客户端:http://download.csdn.net/detail/synge33/3580925

服务端: http://download.csdn.net/detail/synge33/3580920

自己整理的客户端的简易DEMO: http://download.csdn.net/detail/synge33/3580934


使用方法可以看下这个人的博客:http://yangzc106.iteye.com/blog/1101595


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值