为了账号安全,请及时绑定邮箱和手机立即绑定

Android互动直播APP开发 系列之—— 腾讯LiveSDK注册失败的原因分析

标签:
Java Android

在学习《Android互动直播APP开发》 的过程中,有同学表示:老师,我为什么注册不上啊?

总结下来有两个原因:

  1. 网络访问权限没有。

  2. 注册的账号或密码不符合SDK的要求。

第一个原因比较容易想到。第二个原因,经过一番debug调试,才找到了最终的原因。

我们调用的注册方法如下:

ILiveLoginManager.getInstance().tlsRegister

问题就出现在这个方法中,我们debug下去,就会进入ILVBLogin.java中,会接着调用如下方法:

 TlsBusiness.tlsRegister(...) //**注意哦,这里是没有返回值的。**

这个方法里面调用到了:TlsBusiness.java中的:

/**
     * 在TLS模块注册一个账号 (托管方式)
     *
     * @param id
     * @param psw
     */
    public static int tlsRegister(final String id, final String psw, final TLSStrAccRegListener listener) {
        return accountHelper.TLSStrAccReg(id, psw, listener); **//这里是有返回值的哦!**
    }

接下来调用的是TLSAccountHelper.java中的:

__tlsHelper.TLSStrAccReg

然后是:TLSHelper.java中的:

public int TLSStrAccReg(String account, String password, TLSStrAccRegListener listener) {
        if(account.length() != 0 && account.getBytes().length <= 24) {
            if(password.length() != 0 && password.getBytes().length <= 16 && password.getBytes().length >= 8) {
                boolean allNumber = true;

                for(int acc_query = 0; acc_query < account.length(); ++acc_query) {
                    char req_con = account.charAt(acc_query);
                    if(req_con != 46 && req_con != 95 && !Character.isLetterOrDigit(req_con)) {
                        return -1017;
                    }

                    if(!Character.isDigit(req_con)) {
                        allNumber = false;
                    }
                }

                if(allNumber) {
                    return -1017;
                } else {
                    acc_ask_code var7 = new acc_ask_code(97);
                    TransReqContext var8 = new TransReqContext(listener);
                    this.mRegStatus.userID = account;
                    this.mRegStatus.password = password;
                    var8.set_register_req();
                    var8.set_subcmd(var7.get_cmd());
                    var8._body = var7.get_request(this.mAccType, account, req_global._apk_id, this.mAppVer, this.mCountry, this.mSdkAppid, req_global._IMEI);
                    return this.RequestTransport((String)null, 0, account, (String)null, (long)this.mRegStatus.role, var8);
                }
            } else {
                return -1017;
            }
        } else {
            return -1017;
        }
    }

问题就出现在这里:里面有个allNumber。如果全是数字,则返回-1017

按道理应该一路返回上去,但是我们上面看到了,并没有一路return上去。。导致全是数字的时候,没有走注册的回调,导致用户接收不到错误的消息。

找到原因之后,解决问题就很简单了:账号和密码不能全为数字哦~~~

记下来,避免更多的同学踩坑哦!

点击查看更多内容
4人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
116
获赞与收藏
25

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消