在学习《Android互动直播APP开发》 的过程中,有同学表示:老师,我为什么注册不上啊?
总结下来有两个原因:
-
网络访问权限没有。
- 注册的账号或密码不符合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人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦