即时通讯-openfire、smack、spark(二)

连接、注册、登录

开启连接

  • 首先需要导入smack相关jar包,篇尾会给出,至于源码会在该系列的博客最后一篇给出来,如果有问题欢迎大家留言

  • 打开连接相关API
    1、XMPPTCPConnection
    2、XMPPTCPConnectionConfiguration

  • 在开启连接时用到的就是以上两个api,下面看下如何去创建,通过查看源码我们发现创建XMPPTCPConnection时需要传入一个config对象也就是XMPPTCPConnectionConfiguration,关键也在这块,该对象里面包含了一些非常重要的方法如下:

    //设置openfire主机IP
    setHostAddress(InetAddress.getByName(SERVER_HOST))
    //设置openfire服务器名称
    setXmppDomain(SERVER_NAME)
    //设置默认端口号:默认5222
    setPort(SERVER_PORT)
    //禁用SSL连接
    setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
    setCompressionEnabled(false)
    //设置debug模式
    setDebuggerEnabled(true)
    //设置离线状态
    setSendPresence(false)
    //设置开启压缩,可以节省90%流量
    setCompressionEnabled(true);

  • 连接xmpp服务的具体code

    public boolean openConnection() {
        try {
            if (null == connection || !connection.isAuthenticated()) {
                SmackConfiguration.DEBUG = true;
                XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder()
                        //设置openfire主机IP
                        .setHostAddress(InetAddress.getByName(SERVER_HOST))
                        //设置openfire服务器名称
                        .setXmppDomain(SERVER_NAME)
                        //设置默认端口号:默认5222
                        .setPort(SERVER_PORT)
                        //禁用SSL连接
                        .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
                        .setCompressionEnabled(false)
                        //设置debug模式
                        .setDebuggerEnabled(true)
                        //设置离线状态
                        .setSendPresence(false)
                        //设置开启压缩,可以节省90%流量
                        .setCompressionEnabled(true);

                //需要经过同意才可以添加好友
                Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual);

                //连接服务器
                connection = new XMPPTCPConnection(config.build());
                connection.connect();
                Log.e(TAG, "连接服务器成功");
                return true;
            }
        } catch (XMPPException | SmackException | IOException | InterruptedException xe) {
            xe.printStackTrace();
            connection = null;
            Log.e(TAG, "连接服务器失败");
        }
        return false;
    }

以上基本完成连接配置并成功连接到你本地的服务。

注册

  • 注册相关api
    1、AccountManager
  • 获取AccountManager对象实例

    AccountManager.getInstance(Connection conn);

  • 创建账户

    createAccount(account, password);

  • 注册code
    /**
     * 注册
     *
     * @param account  账号
     * @param password 密码
     * @param attr     用户资料 attr对应的一些属性值 name;email;first;last;city;state;zip;
     *                 phone;url;date;misc;text;remove(可以查看AccountManager中的getAccountAttributes()函数注释)
     */
    public boolean register(String account, String password, Map<String, String> attr) {
        try {
            //获取AccountManger实例
            AccountManager manager = getAccountManager();
            //服务器支持创建新账户
            if (manager.supportsAccountCreation()) {
                if (null == attr) {
                    //创建账户
                    manager.createAccount(Localpart.from(account), password);
                } else {
                    //创建账户并且涵盖map集合中的一些其他信息
                    manager.createAccount(Localpart.from(account), password, attr);
                }
                Log.e(TAG, "注册成功");
                return true;
            }
        } catch (XMPPException | IOException | SmackException | InterruptedException xe) {
            xe.printStackTrace();
            Log.e(TAG, "注册失败");
        }
        return false;
    }

以上是注册code

登录

  • 登录相关api
    1、XMPPTCPConnection

  • 登录

    login(account, password);

  • 登录code

    /**
     * 登录
     *
     * @param account  账号
     * @param password 密码
     */
    public boolean login(String account, String password) {
        try {
            getConnection().login(account, password);
            Log.e(TAG, "登录成功");
            return true;
        } catch (XMPPException | IOException | SmackException | InterruptedException xe) {
            xe.printStackTrace();
            Log.e(TAG, "登录失败");
        }
        return false;
    }

以上是登录code

----------------------------------------------------------我是分割线--------------------------------------------------------------

接下来给大家看下效果图
连接、注册、登录

smack4.2.1-jar包下载地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值