aSmack4.0之旅(一)配置介绍注册篇

aSmack4.0之旅(一)配置注册篇

一、Smack是什么

Smack是一个开源,易于使用的XMPP(jabber)客户端类库。
Smack API, 是一个 Java 的XMPP Client Library,也是由Jive Software开发。
 优点:编程简单。
 缺点:API并非为大量并发用户设计,每个客户要1个线程,占用资源大,1台机器只能模拟有限(数千个)客户.
smack是一个用 java 写的XMPP客户端代码库, 是 spark 的核心.

二、Smack的优点

1:Smack是一个简单的,功能强大的类库。给用户发送信息只需三行代码便可完成
XMPPConnection connection = new XMPPTCPConnection(”jabber.org“);
connection.login(”mtucker”, “password”);
connection.createChat(”[email protected]“).sendMessage(”Howdy!”);
2:不会强迫你向其他类库那样,在信息包层面进行编码。它提供了更加智能化的类比如Chat,能使你的工作更富效率。
3:不需要你熟悉XMPP XML格式,甚至是XML格式。
4:易于实现机-机对话。
5:Apace License下的开源软件。你可以把它用于你的商业或非商业程序。
好的不废话了,进入咱们的正题。aSmack4.0后和Smack基本差异也没那么大了,现在来说说aSmack4.0后版本的配置和使用

一、我们先到官网下载需要的jar包如果需要源码官方也是提供了的


当然开发之前别忘了先读一读官方提供的版本更新说明以及README不然你将会有大麻烦的

4.0以后改动略大了点使用前需要导入两个包我用的是asmack-android-8-4.0.5.jar和dnsjava-2.1.3.jar可别忘了dnsjava.jar不然SmackAndroid.init()会出问题的哦

好了,下面开始我们的注册

1、SmcakAndroid,init(getApplicationContext());初始化。
2、配置ConnectionConfiguration
configuration = new ConnectionConfiguration(config.getXmppHost(),config.getXmppPort(), config.getXmppServernanme());
//config.getXmppHost()  openfir服务器地址     config.getXmppPort() 端口号(5222)config.getXmppServernanme()名字随意。Android默认为Smack

3、configuration.setSecurityMode(SecurityMode.disabled); 设置为disabled否则认证失败。
4、connection = new XMPPTCPConnection(configuration);   好的配置完成了,下面是开始注册就直接贴代码了


/**
	 * 注册
	 * 
	 * @param account
	 *            注册帐号
	 * @param password
	 *            注册密码
	 */
	public int regist(String account, String password) {
		try {
			XMPPConnection connection = XMPPConnectionManager.getInstance()
					.getConnection();
			connection.connect();
			Registration reg = new Registration();
			reg.setType(IQ.Type.SET);
			reg.setTo(connection.getServiceName());
			Map<String, String> map = new HashMap<String, String>();
			map.put("username", account);
			map.put("password", password);
			reg.setAttributes(map);
			PacketFilter filter = new AndFilter(new PacketIDFilter(
					reg.getPacketID()), new PacketTypeFilter(IQ.class));
			PacketCollector collector = XMPPConnectionManager.getInstance()
					.getConnection().createPacketCollector(filter);
			connection.sendPacket(reg);
			IQ result = (IQ) collector.nextResult(SmackConfiguration
					.getDefaultPacketReplyTimeout());
			System.out.println("-----------------result--------------------"
					+ result);
			collector.cancel();// 停止请求results(是否成功的结果)
		} catch (Exception e) {
			e.printStackTrace();
			return Constant.LOGIN_ERROR;
		}
		return Constant.LOGIN_SECCESS;
	}

注意事项:


1、需要注意点是注册是需要异步操作否则连接异常
2、aSmack对ADT要求蛮高,最好是23及以上,否则出现各种奇葩错误

好的,今天就到这了,希望能帮到大家







郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。