本文为您介绍了号码认证服务的不同功能下使用SDK的常见问题及解决方法。
目录
问题分类 | 具体问题 | |
移动端SDK(iOS/Android) | 环境检测与初始化 | |
一键登录功能 | ||
本机号码校验功能 | ||
错误码与异常处理 | ||
问题13:移动卡出现crash【[UAReachability reachableType]: unrecognized selector sent to instance】,该怎样解决? | ||
权限与配置 | ||
H5 SDK | ||
后端API | ||
通用问题 | 密钥与安全 | |
网络环境 | ||
性能与稳定性 | ||
移动端SDK(iOS/Android)
环境检测与初始化
问题1:checkEnvAvailable函数返回false?
可能原因:
未插入SIM卡
未开启移动数据
网络权限未开启
解决方法:
检查是否插入SIM卡
检查是否开启移动数据
检查App的网络权限配置
问题2:初始化接口checkEnvAvailableWithComplete一直返回NO?
排查顺序:
SIM卡状态检查
手机SIM卡是否处于已激活、不欠费的状态
手机SIM卡的移动数据是否开启
App权限检查
App的网络权限是否开启
Android:检查是否同时拥有WLAN和移动数据网络权限
网络环境检查
设备是否有代理(VPN)
开启VPN时,一键登录会出现以下错误:
中国联通:源IP错误
中国电信:800008错误
中国移动:103111错误
解决方法:关闭VPN或打开飞行模式再关闭后重试
配置检查
云控制台上是否创建了方案号
创建方案号中的BundleID是否与项目中使用的保持一致
设备时间设置是否标准(不能修改手机时间戳提前或延期)
是否调用了setAuthSDKInfo接口
一键登录功能
问题3:首次取号时,App网络通信正常,但号码认证一直失败?
可能原因:
SIM卡欠费,无法通过移动数据上网
Android某些厂商系统,Wi-Fi网络权限与移动数据网络权限分开管理,App可能只有WLAN权限,缺少移动数据网络权限
解决方法:
检测SIM卡是否欠费,能否通过移动数据上网
Android:检查App是否同时拥有WLAN和移动数据网络权限
问题4:Android双卡手机一键登录过程中,使用哪张移动数据卡进行认证?
使用默认移动数据卡进行一键登录认证。
问题5:中国联通5G移动数据导致一键登录获取本机号码失败?
解决方法:
在networkSecurityConfig清单文件中配置联通域名enrichgw.10010.com。
配置示例:
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">enrichgw.10010.com</domain>
</domain-config>
</network-security-config>问题6:登录Token存在失败吗?
存在失败情况:
偶然出现:由于网络波动导致网关断开、网络不可用、供应商服务端异常、业务方服务端异常等因素
持续出现:需要运营商协助排查来解决问题
问题7:一键登录服务支持哪些网络环境?
推荐环境:4G或4G+Wi-Fi
不推荐:2G和3G网络下接口请求失败或超时概率较高
三大运营商支持的网络环境:
中国移动:4G、5G
中国联通:4G、5G(需配置域名)
中国电信:4G、5G
问题8:经常超时怎么办?
排查步骤:
基础检查
确保SIM卡没欠费
通过Safari打开某个网址确认移动网络是否正常
确认超时时间(单位:s)是否设置正确,建议3000 ms~5000 ms
可能原因
2G和3G网络下接口请求失败或超时概率较高
切换网络过程中网络不稳定,出现超时的概率较大
本机号码校验功能
问题9:获取Token失败,一般有哪些原因?
网络环境
手机设置检测网络,三大运营商网络在4G网络成功率较高
接口超时时间是否过短,建议3000 ms~5000 ms
SIM卡状态
检测SIM卡是否欠费
检查网络设置,是否可以移动数据网络上网
网络稳定性
在切换SIM卡过程中,需要等网络稳定后,再使用认证登录功能
错误码与异常处理
问题10:返回错误码600005,手机终端不安全有哪些原因?
可能原因:
手机网络是否连接了代理
手机是否处于hook状态,或者安装了相关的hook框架
App是否处于attached状态
手机是否被root
是否在模拟器环境中运行
App是否处于调试状态(使用
getReporter.setLoggerEnable(true)可以关闭此项检测)
问题11:什么情况下会返回600005页面非法修改?
添加悬浮窗控件遮挡隐私协议、一键登录按钮以及掩码,或将字体颜色设置为透明,SDK会回调600005页面非法修改。
问题12:移动卡请求一键登录不成功,常见报错日志及解决方法
报错日志 | 解决方法 |
| 检查依赖v4包 |
| 检查清单文件application标签下是否配置了 |
networkSecurityConfig配置示例:
<application
android:name=".DemoApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/config"
android:requestLegacyExternalStorage="true">
</application>
<!-- network-security-config.xml -->
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">enrichgw.10010.com</domain> <!-- 联通内部5G请求域名 -->
<domain includeSubdomains="true">onekey.cmpassport.com</domain> <!-- 移动内部请求域名 -->
</domain-config>
</network-security-config>问题13:移动卡出现crash【[UAReachability reachableType]: unrecognized selector sent to instance】,该怎样解决?
解决方法(iOS):
在主工程中单击Project,选择Edit Active Target > Build Settings > Linking > Other Linker Flags,添加**-all_load和-ObjC**。
权限与配置
问题14:若出现权限相关问题,该怎样做?
检查步骤:
检查App的权限是否可以正常申请
正常引用aar,权限会自动merge
若权限没有merge,需要手动添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />问题15:内存泄漏的种类有哪些?为什么会出现内存泄漏?
1. Toast内存泄漏
原因1:协议没勾选点击一键登录按钮显示Toast,退出授权页出现内存泄漏
解决方法:使用
AuthUIConfig.setLogBtnToastHidden(true)隐藏默认Toast,根据点击事件的code自己显示Toast即可
原因2:页面非法修改,当授权页号码栏、一键登录Button、协议栏出现重叠或者遮挡时点击一键登录按钮,显示Toast页面非法修改
解决方法:可通过查看图层解决重叠问题
2. TokenResultListener内存泄漏
原因:SDK内部会持有外部设置进来的TokenResultListener
解决方法:在一键登录功能使用完毕之后通过
PhoneNumberAuthHelper.setAuthListener(null)将回调置空即可
H5 SDK
问题16:为什么使用中国联通4G网络,依然获取不到本机号码校验Token?
可能原因:
使用了物联网卡
物联网卡通过装置在各类物体上的SIM卡、传感器、二维码等,经过接口与无线网络连接,可以实现人与物体、物体与物体间的沟通和对话
物联网卡不支持本机号码校验功能
网络接入点问题
中国联通不支持接入点为wap的网络取号
浏览器问题
UC和QQ浏览器开启免流模式可能会导致取号不成功
解决方法:
确认使用的是普通SIM卡,非物联网卡
检查网络接入点设置
关闭浏览器的免流模式,或使用其他浏览器
后端API
问题17:后端API调用失败,如何排查?
AccessCode验证失败
Token验证失败
签名错误
请求超时
通用问题
密钥与安全
问题18:setAuthSDKInfo的密钥如何获取?
获取步骤:
登录号码认证产品控制台
在左侧导航栏选择号码认证服务 > 号码认证方案管理
单击对应的方案操作列密钥
在出现的弹框上单击复制密钥
重要提示:
此密钥是号码认证方案的应用密钥,不是阿里云账户的AccessKey、AccessSecret
建议将该密钥在App服务端维护,可以减少因客户端存在的安全隐患而导致的密钥泄露风险
问题19:SDK使用过程的安全性如何保障?
调用过程是基于运营商及阿里云的电信级运维安全保障。
安全流程:
获取AccessCode(移动端)
通过移动数据网络发起请求,获取AccessCode
AccessCode的有效次数为一次,使用后立即失效
AccessCode有效时长:
中国移动:2分钟
中国联通:60分钟
中国电信:10分钟
验证AccessCode(服务端)
通过AccessCode和手机号请求认证结果
基于阿里云访问密钥对服务端请求进行鉴权
网络环境
问题20:支持哪些网络环境?
推荐环境:
4G网络
4G+Wi-Fi混合网络
5G网络(需注意运营商特殊配置)
不推荐环境:
2G网络:接口请求失败或超时概率较高
3G网络:接口请求失败或超时概率较高
运营商支持情况:
中国移动:4G、5G
中国联通:4G、5G(5G需配置域名
enrichgw.10010.com)中国电信:4G、5G
性能与稳定性
问题21:如何提高SDK的稳定性和成功率?
最佳实践:
网络环境
确保在4G或5G网络环境下使用
避免在2G/3G网络下使用
避免在网络切换过程中使用
设备状态
确保SIM卡已激活且未欠费
确保移动数据已开启
关闭VPN代理
避免在模拟器或root设备上使用(生产环境)
配置优化
设置合理的超时时间(建议3000 ms~5000 ms)
正确配置网络权限
正确配置networkSecurityConfig(Android)
确保BundleID与云控制台配置一致
错误处理
实现完善的错误处理逻辑
对失败情况进行重试(注意AccessCode有效期)
提供降级方案(如短信验证码)