前言
实现功能
AndroidStudio基于openfire实现登录注册
1、在gradle里添加配置
compile"org.igniterealtime.smack:smack-android-extensions:4.1.0"
compile"org.igniterealtime.smack:smack-experimental:4.1.0"
compile"org.igniterealtime.smack:smack-tcp:4.1.0"
2、获取连接对象
public classXmppManager {
private staticXMPPTCPConnectionxmppConnection;
// 域名:IP地址、服务器域名
private static finalStringHOST="192.168.0.13";//192.168.0.76
// 端口号
private static final intPORT=5222;
// 服务器名称
public static finalStringSERVICE_NAME="192.168.0.13";
/**
* 获取连接对象
*
*@return
*/
public staticXMPPTCPConnectiongetConnection() {
if(xmppConnection==null) {
xmppConnection=openConnection();
}
returnxmppConnection;
}
/**
* 打开连接
*
*@return
*/
private staticXMPPTCPConnectionopenConnection() {
if(!isConnected()) {
XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration
.builder()
.setHost(HOST)
.setPort(PORT)
.setServiceName(SERVICE_NAME)
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
xmppConnection=newXMPPTCPConnection(builder.build());
try{
xmppConnection.connect();
}catch(Exception e) {
e.printStackTrace();
}
}
returnxmppConnection;
}
/**
* 判断是否已经连接
*
*@return
*/
private static booleanisConnected() {
returnxmppConnection!=null&&xmppConnection.isConnected();
}
}
3、编写登录界面
4、实现注册
XMPPTCPConnection connection = XmppManager.getConnection();
AccountManager accountManager = AccountManager.getInstance(connection);
accountManager.sensitiveOperationOverInsecureConnection(true);
Map attributes =newHashMap();
attributes.put("email",params[2]);//附加属性可以不要
accountManager.createAccount(params[0],params[1],attributes);//创建账号即注册
注:注册账号为耗时操作
5、实现登录
XMPPTCPConnection connection = XmppManager.getConnection();
// 登录
connection.login(params[0],params[1]);
// 更新状态
// available: 表示处于在线状态
// unavailable: 表示处于离线状态
// subscribe: 表示发出添加好友的申请
// unsubscribe: 表示发出删除好友的申请
// unsubscribed: 表示拒绝添加对方为好友
// error: 表示presence信息报中包含了一个错误消息。
connection.sendStanza(newPresence(Presence.Type.available));//设置状态