本文为您介绍了号码认证服务的不同功能下使用SDK的常见问题及解决方法。

一键登录和本机号码校验相关FAQ

问题概览

首次取号时,App网络通信正常,但号码认证一直失败的原因?

  • 检测SIM卡是否欠费,能否通过移动数据上网。
  • Android国内某些厂商的系统,Wi-Fi网络权限与移动数据网络权限是分开管理的,检查App是否仅仅只有WLAN网络权限,而缺失移动数据网络权限。

checkEnvAvailable函数返回false?

  • 检查是否插入SIM卡。
  • 检查是否开启移动数据。

Android双卡手机一键登录过程中,使用哪张移动数据卡进行认证?

使用默认移动数据卡进行一键登录认证。

若终端使用的是中国联通SIM卡的5G移动数据,导致一键登录获取本机号码失败,其解决方法是什么?

您可在networkSecurityConfig清单文件中配置联通域名enrichgw.10010.com解决此问题。

初始化接口checkEnvAvailableWithComplete一直返回NO?

您可根据该顺序进行排查:
  1. 手机SIM卡是否处于已激活、不欠费的状态。
  2. 手机SIM卡的移动数据是否开启。
  3. App的网络权限是否开启。
  4. 设备是否有代理。当您开启VPN,再进行一键登录操作时,中国联通号码会出现源IP错误、中国电信号码会出现800008错误、中国移动号码会出现103111错误,请关闭VPN之后或者打开飞行模式再关闭之后进行重试。
  5. 云控制台上是否创建了方案号。
  6. 创建方案号中的BundleID是否与项目中使用的保持一致。
  7. 设备时间设置是否标准,不能修改手机时间戳提前或延期。
  8. 是否调用了setAuthSDKInfo接口。
如上述操作均不能解决您的问题,请创建工单并提供BundleID。

移动卡出现crash【[UAReachability reachableType]: unrecognized selector sent to instance】,该怎样解决?

在主工程中单击Project,选择Edit Active Target > Build Settings > Linking > Other Linker Flags,添加-all_load-ObjCimage07

登录Token存在失败吗?

存在。
  • 偶然出现:由于网络波动导致网关断开、网络不可用、供应商服务端异常、业务方服务端异常等因素。
  • 持续出现:需要运营商协助排查来解决问题。

一键登录服务一般是4G或者4G+Wi-Fi情况下,如果使用3G或2G的网络会怎么样?

2G和3G网络下接口请求失败或超时概率较高。三大运营商支持的网络环境,请参见支持哪些网络环境?

经常超时怎么办?

首先确保您的SIM卡没欠费,其次通过Safari打开某个网址来确认移动网络是否正常,最后确认超时时间(单位:s)是否设置正确。检查无误后超时的原因可能为:
  • 2G和3G网络下接口请求失败或超时概率较高。
  • 切换网络过程中网络不稳定,出现超时的概率较大。

H5本机号码校验类FAQ

为什么使用中国联通4G网络,依然获取不到本机号码校验Token?

原因有以下几种:
  • 使用了物联网卡。物联网卡通过装置在各类物体上的SIM卡、传感器、二维码等,经过接口与无线网络连接,可以实现人与物体、物体与物体间的沟通和对话。
  • 中国联通不支持接入点为wap的网络取号。
  • UC和QQ浏览器开启免流模式可能会导致取号不成功。

活体认证类FAQ

checkEnvAvailable函数返回false的原因?

  • 检查是否有插入SIM卡。
  • 检测是否已开启移动网络。

开通了活体认证,密钥发生更换,对历史版本的App是否会有影响?

  • Android:若密钥保存在App客户端,则不会有影响;若旧版本的App密钥是保存在服务端的,则更新密钥时需要区分新旧版本,否则会有影响。要保证旧SDK拿到的是旧密钥,新SDK拿到的是新密钥。新旧密钥及版本的划分,详情请参见SDK与密钥说明
  • iOS:无影响。

集成SDK后真机运行为什么会出现Unable to install "xxxx"?

在菜单栏上单击TARGET,选择Build Phases > Embed Frameworks,勾选Copy only when installing可解决该问题。inage06

SDK公共问题FAQ

问题概览

若出现权限相关问题,该怎样做?

检查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" />

获取Token失败,一般有哪些原因?

  • 手机设置检测网络,三大运营商网络在4G网络成功率较高。
  • 接口超时时间是否过短,建议3000 ms~5000 ms。
  • 检测SIM卡是否欠费。
  • 检查网络设置,是否可以移动数据网络上网。
  • 在切换SIM卡过程中,需要等网络稳定后,再使用认证登录功能。

返回错误码600005,手机终端不安全有哪些原因?

  • ⼿机⽹络是否连接了代理。
  • ⼿机是否处于hook状态,或者安装了相关的hook框架。
  • App是否处于attached状态。
  • ⼿机是否被root。
  • 是否在模拟器环境中运⾏。
  • App是否处于调试状态,使⽤getReporter.setLoggerEnable(true)可以关闭此项检测。

内存泄漏的种类有哪些?为什么会出现内存泄漏?

  • Toast内存泄漏
    • 协议没勾选点击⼀键登录按钮显示Toast,退出授权⻚⻚出现内存泄漏。解决办法是AuthUIConfig.setLogBtnToastHidden(true)隐藏默认Toast,根据点击事件的code⾃⼰显示Toast即可。
    • ⻚⾯⾮法修改,当授权⻚号码栏、⼀键登录Button、协议栏出现重叠或者遮挡时点击⼀键登录按钮,显示Toast⻚⾯⾮法修改,可通过查看图层解决重叠问题。
  • TokenResultListener内存泄漏

    SDK内部会持有外部设置进来的TokenResultListener,在⼀键登录功能使⽤完毕之后通过PhoneNumberAuthHelper.setAuthListener(null)将回调置空即可。

setSDKAuthSDKInfo的密钥如何获取?

登录号码认证产品控制台,选择号码认证服务 > 认证方案管理,单击密钥再复制密钥,建议维护在App服务端。此密钥不是阿里云的AccessKey、AccessSecret。ak

什么情况下会返回600005页面非法修改?

添加悬浮窗控件遮挡隐私协议、一键登录按钮以及掩码,或将字体颜色设置为透明,SDK会回调600005页面非法修改。

当使用移动卡请求一键登录不成功,可能出现的报错日志及解决方法有哪些?

报错日志 解决方法
ontokenfaild{"code":"600011","msg":"vendorCode:200025, msg获得的手机授权码失败:{\"resultCode\":\"200025\",\"authType\":\"1\",\"authTypeDes\":\"WIFI下网关鉴权\",\"resultDesc\":\"发生未知错误\"}","requestCode":0,"vendorName":"CMCC"} 请检查依赖v4包com.android.support:support-v4版本是否高于25.4.0或者v7包com.android.support:appcompat-v7版本是否高于25.4.0。
ontokenfaild{"code":"600011","msg":"vendorCode:200028, msg获得的手机授权码失败:{\"resultCode\":\"200028\",\"authType\":\"1\",\"authTypeDes\":\"网络鉴权\",\"resultDesc\":\"网络异常\"}","requestCode":0,"vendorName":"CMCC"} 请检查清单文件application标签下是否配置了android:usesCleartextTraffic="true"、android:networkSecurityConfig文件。如果设置了networkSecurityConfig文件,请在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>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">enrichgw.10010.com</domain> <!-- 联通内部5G请求域名,开发者需要添加 -->
        <domain includeSubdomains="true">onekey.cmpassport.com</domain>  <!-- 移动内部请求域名,开发者需要添加 -->
    </domain-config>
</network-security-config>