研究Androidpn

来源:互联网 发布:淘宝链接怎么发给客服 编辑:程序博客网 时间:2024/05/11 12:12

根据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


原创粉丝点击