1.开发准备
欢迎访问我的个人博客:http://ittiger.cn
在官网上下载最新的Smack开发包,我下载的是smack4.1.4版本的,导入相应的jar包即可开始开发工作
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