Smack
https://github.com/igniterealtime/Smack
aSmack项目
https://github.com/Flowdalic/asmack
从4.1开始smack已经支持Android了,aSmack项目也不再维护了。
aSmack 0.8.x 和4.x的改变还是很多的,对比一下他们的写法就知道了。(服务端 为 Openfire 3.10.0~3.10.2 默认配置)
0.8.x连接服务器的配置
ConnectionConfiguration config = new ConnectionConfiguration(HOST, PORT);
SASLAuthentication.supportSASLMechanism("PLAIN", 0);
// 设置登录状态为离线,默认为true
config .setSendPresence(false);
config .setSendPresence(true);
// 断网重连,默认为true
config .setReconnectionAllowed(true);
XMPPConnection connction = new XMPPConnection(config);
connection.connect();
这样就能够正常登录了。
4.x的代码片段
// 认证模式:PLAIN 最简单的,也是危险的
SASLAuthentication.supportSASLMechanism("PLAIN", 0);
ConnectionConfiguration config = new ConnectionConfiguration(SERVER_HOST, SERVER_PORT);
// 设置登录状态为在线
config.setSendPresence(true);
// 断线重连
config.setReconnectionAllowed(true);
// 安全连接:根据服务器设置是否启用安全连接
// 4.x默认开启,设置为禁用,否则提示证书错误之类的,需要配置证书 config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
connection = new XMPPTCPConnection(config);
new
一个XmppConnection
,而4.xXmppConnection
已经是抽象类了,只能通过其子类XmppTCPConnection
来实现了。SmackAndroid.init(getApplicationContext());
使用过程中可能出现各种错误,google一般都是有答案的。