Smack4.20实现连接登陆(1)

因为Smack4.20的资料还不大多,并且很以前的方法都被替换或过时了,想记录下和大家分享下个人的经验,有问题的希望大家多多包含,在最后的篇幅中我会贴出工具类的所有代码!

Smack和Openfire就不多介绍了,博主用的是openfire4.1.3+smack4.20。

调试软件我用的是spark客户端,方便调试,官网都可以下载。


废话不多说,首先导入相应jar包,我用的IDE是android studio,所以通过gradle管理jar包是非常方便的,jar包如下:

compile "org.igniterealtime.smack:smack-android-extensions:4.2.0" 
compile "org.igniterealtime.smack:smack-android:4.2.0"
compile "org.igniterealtime.smack:smack-tcp:4.2.0"
compile "org.igniterealtime.smack:smack-im:4.2.0"


然后开始实现创建连接

 public XMPPTCPConnection createConnection() {
        XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
        try {
            //设置openfire主机IP
            config.setHostAddress(InetAddress.getByName(ApiConstants.OPENFIRE_IP));
            //设置openfire服务器名称
            config.setXmppDomain(ApiConstants.OPENFIRE_NAME);
            //设置端口号:默认5222
            config.setPort(ApiConstants.OPENFIRE_PORT);
            //禁用SSL连接
            config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled).setCompressionEnabled(false);

            config.setDebuggerEnabled(true);
            //设置离线状态
            config.setSendPresence(false);
            //需要经过同意才可以添加好友
            Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual);

            connection = new XMPPTCPConnection(config.build());
            connection.connect();

        } catch (Exception e) {
            Logger.d("openfire连接失败,请检查是否开启服务器!");
            e.printStackTrace();
        }
        return connection;
    }

以前smack4之前的版本都是使用XMPPConnection,在之后我们都要XMPPTCPConnectionConfiguration来实现连接。注意,这里的变量我都是定义静态变量方便查看管理,上面都写了注释,对应的要修改过来。然后我们需要通过连接builder来设置连接信息,然后才开始建立连接。


实现了连接后我们可以开始登陆了,登陆代码如下:

public boolean login(String username, String password){
        try {
            if(connection == null){
                connection = createConnection();
            }
            if(!connection.isAuthenticated()){
                connection.login(username, password);
            }

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

注意,这里的参数就是我们openfire中注册的用户名和密码,这里openfire的安装和添加用户就不多说了,网上很多资料。


就这样我们就简单的实现了smack的连接和登陆,现阶段都是比较简单的方法,下一章再重点说明发起单聊消息与消息的监听。


                
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值