基于openfire+smack开发Android即时聊天应用[二]-用户注册、登陆、修改密码、注销等

时间:2022-11-18 23:27:37



1.开发准备


欢迎访问我的个人博客:http://ittiger.cn


在官网上下载最新的Smack开发包,我下载的是smack4.1.4版本的,导入相应的jar包即可开始开发工作

基于openfire+smack开发Android即时聊天应用[二]-用户注册、登陆、修改密码、注销等

2.Openfire服务连接(连接服务器)


    /**
* 连接服务器
* @return
*/
private XMPPTCPConnection connect() {
try {
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setHost(SERVER_IP)//服务器IP地址
//服务器端口
.setPort(PORT)
//服务器名称
.setServiceName(SERVER_NAME)
//是否开启安全模式
.setSecurityMode(XMPPTCPConnectionConfiguration.SecurityMode.disabled)
//是否开启压缩
.setCompressionEnabled(false)
//开启调试模式
.setDebuggerEnabled(true).build();

XMPPTCPConnection connection = new XMPPTCPConnection(config);
connection.connect();
return connection;
} catch (Exception e) {
return null;
}
}


3.登陆Openfire服务


   /**
* 是否连接成功
* @return
*/
private boolean isConnected() {
if(connection == null) {
return false;
}
if(!connection.isConnected()) {
try {
connection.connect();
return true;
} catch (SmackException | IOException | XMPPException e) {
return false;
}
}
return true;
}

/**
* 登陆
* @param user用户账号
* @param password用户密码
* @return
* @throws Exception
*/
public boolean login(String user, String password) throws Exception {
if(!isConnected()) {
return false;
}
try {
connection.login(user, password);
return true;
} catch (Exception e) {
throw e;
}
}


4.用户注册


该功能会在服务器上创建一个新的账号信息

   /**
* 注册用户信息
* @param user 账号,是用来登陆用的,不是用户昵称
* @param password 账号密码
* @param attributes 账号其他属性,参考AccountManager.getAccountAttributes()的属性介绍
* @return
*/
public boolean registerUser(String user, String password, Map<String, String> attributes) {
if(!isConnected()) {
return false;
}
try {
AccountManager.getInstance(connection).createAccount(user, password, attributes);
return true;
} catch (NoResponseException | XMPPErrorException | NotConnectedException e) {
Log.e(TAG, "注册失败", e);
return false;
}
}


5.修改账号密码


   /**
* 修改密码
* @param newpassword 新密码
* @return
*/
public boolean changePassword(String newpassword) {
if(!isConnected()) {
return false;
}
try {
AccountManager.getInstance(connection).changePassword(newpassword);
return true;
} catch (NoResponseException | XMPPErrorException | NotConnectedException e) {
Log.e(TAG, "密码修改失败", e);
return false;
}
}


6.注销(断开连接)


    /**
* 注销
* @return
*/
public boolean logout() {
if(!isConnected()) {
return false;
}
try {
connection.instantShutdown();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}


7.删除账号


   /**
* 删除当前登录的用户信息(从服务器上删除当前用户账号)
* @return
*/
public boolean deleteUser() {
if(!isConnected()) {
return false;
}
try {
AccountManager.getInstance(connection).deleteAccount();//删除该账号
return true;
} catch (NoResponseException | XMPPErrorException | NotConnectedException e) {
return false;
}
}


代码都非常简单,smack的api调用很方便。


write by laohu

2015-10-30 16:56:07