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

1. 开发准备

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* 连接服务器
* @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服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
   /**
* 是否连接成功
* @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.用户注册


该功能会在服务器上创建一个新的账号信息
```java
/**
* 注册用户信息
* @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.修改账号密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  /**
* 修改密码
* @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.注销(断开连接)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 注销
* @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


原创文章,转载请出处注明。

下面是我的个人公众号,欢迎关注交流

# Android, IM
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×