跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

本机号码认证集成文档

1. 概述

官网下载SDK后进行解压,解压后包含两个文件是:

a) Demo工程

b) 相关依赖包

SDK同时包含了本机号码认证和一键登录两个功能。号码认证服务包含本机号码认证和一键登录时两个不同的功能,使用场景不一样,无需一起使用。

本机号码认证使用场景:用户输入手机号码,通过SDK获取token(通过getVerifyToken获取),服务端携带输入的手机号码和token去运营商网关进行校验(服务端调用VerifyMobile接口),返回的结果时用户当前上网使用的号码与输入的号码是否一致。

一键登录使用场景:用户无需输入手机号码,SDK会拉起授权页,用户确认授权后,SDK会获取token(通过getLoginToken获取),服务端携带token到运营商网关获取用户当前上网使用的号码(服务端调用GetMobile接口),并返回给APP服务端。

2. 准备工作

a) 请确保您的终端设备已经开启了4G网络(联通、移动支持3G网络,但接口耗时会增加)

b) 请确保已经在友盟+控制台开通了号码认证服务并创建了对应的方案,点击进入控制台。

c) 您也可以点击查看完整使用流程。

3. 运行demo工程

您可以直接运行解压后的demo工程。Demo工程

4. 开发环境搭建

1) maven自动集成

在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】SDK新maven仓库地址。

maven { url 'https://repo1.maven.org/maven2/' }
buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://repo1.maven.org/maven2/' }
     }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://repo1.maven.org/maven2/' }
    }
}

在工程App 对应build.gradle配置脚本dependencies段中添加common SDK库和认证库依赖:

dependencies {
    implementation  'com.umeng.umsdk:common:+'// 必选
    implementation  'com.umeng.umsdk:asms:+'// 必选
    implementation  'com.umeng.umsdk:uverify:+'// 必选
    implementation  'com.umeng.umsdk:uverify-main:+'// 必选
    implementation  'com.umeng.umsdk:uverify-logger:+'// 必选
    implementation  'androidx.appcompat:appcompat:1.3.1'(最低版本)
}

2) 手动集成

下载SDK并解压后,将aar拷贝至工程的libs目录下。强依赖包:

  1. umeng-uverify-2...aar

  2. umeng-common-9...jar

  3. umeng-asms-armeabi-v1...aar

  4. umeng-logger-2.x.x.aar

  5. umeng-main-2.x.x.aar

  6. 以及动态引入v7包:com.android.support:appcompat-v7:27.1.1(最低版本)

3) 配置Android9.0对http协议的支持方式

在res/xml目录新建网络安全配置文件:network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">enrichgw.10010.com</domain>
    </domain-config>
</network-security-config>

在app项目AndroidManifest.xml中application节点增加启用明文传输数据的配置

<application android:networkSecurityConfig="@xml/network_security_config" >

4) 相关调用函数

注意:

/**
 *  为满足工信部合规要求,请确保按照合规指南进行预初始化
 *  https://developer.umeng.com/docs/119267/detail/182050
 */
UMConfigure.preInit(this, "替换为Appkey,服务后台位置:应用管理 -> 应用信息 -> Appkey", "渠道信息");

/*
* 0.在Application的onCreate方法中初始化Appkey等信息
*/
UMConfigure.init(this, "替换为Appkey,服务后台位置:应用管理 -> 应用信息 -> Appkey", "渠道信息", UMConfigure.DEVICE_TYPE_PHONE, "");
/*
* 1.初始化获取token实例
*/
mTokenListener = new UMTokenResultListener() {}
/*
*   2.初始化SDK实例
*/
umVerifyHelper =UMVerifyHelper.getInstance(context, mTokenListener);
/*
*   3.设置SDK密钥
*/
umVerifyHelper.setAuthSDKInfo();
/*
*   4.检测终端网络环境是否支持一键登录或者号码认证
*/
 umVerifyHelper.checkEnvAvailable();
/*
*   5.若步骤4支持,则根据业务情况,调用预取号或者一键登录接口
*     详见demo接入工程
*/
umVerifyHelper.getVerifyToken(context, 5000);

5) 混淆keep规则

-keep class com.umeng.** {*;}

-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

6)若开启资源混淆,需配置

"R.drawable.authsdk*",
"R.layout.authsdk*",
"R.anim.authsdk*",
"R.id.authsdk*",
"R.string.authsdk*",
"R.style.authsdk*",

"R.drawable.umcsdk*",
"R.layout.umcsdk*",
"R.anim.umcsdk*",
"R.id.umcsdk*",
"R.string.umcsdk*",
"R.style.umcsdk*",

5. 智能认证SDK方法说明

5.1 获取认证实例(getInstance)

/**
     * 函数名:getInstance
     * @param context
     * @param tokenResultListener
     * @return UMVerifyHelper 实例
     */
public static UMVerifyHelper getInstance(Context context, UMTokenResultListener tokenResultListener)

5.2设置SDK密钥(setAuthSDKInfo)

/**
  * 设置SDK密钥信息
  * @param secret 密钥信息 需要从服务端获取
  */
public void setAuthSDKInfo(String secret)

5.3检查终端是否支持号码认证(checkEnvAvailable)

/**
     * SDK环境检查函数,检查终端是否支持号码认证,通过UMTokenResultListener返回code
     * @param type 1:本机号码校验 2:一键登录
     * 600024 终端支持认证
     * 600013 系统维护,功能不可用
     */
public void checkEnvAvailable(@IntRange(from =1, to =2)int type)

5.4关键日志开关(setLoggerEnable)

/**
     * 设置SDK 是否开启日志
     * @param isDebug 为true则输出关键步骤运行日志
     */
public void setLoggerEnable(boolean isDebug)

5.5加速本机号码校验(accelerateVerify)

/**
     * 加速本机号码校验
     *
     * @param overdueTime 预取号有效期
     * @param listener    预取号回调
     */
public void accelerateVerify(int overdueTime, final UMPreLoginResultListener listener)

5.6本机号码认证获取token(getVerifyToken)

/**
     * 获取本机号码认证token
     * @param timeout 超时时间,单位ms
     */
public void getVerifyToken(int timeout)

5.7 SDK回调接口

获取token回调

public interface UMTokenResultListener {

    /**
     * 授权页唤起成功或获取token成功
     * @param ret 返回码
     */
    void onTokenSuccess(String ret);

    /**
     * 获取token失败
     * @param ret 返回信息
     */
    void onTokenFailed(String ret);

}

获取预取号码回调

public interface UMPreLoginResultListener {
    /**
     *
     * @param vendor 返回预取成功运营商
     */
    void onTokenSuccess(String vendor);

    /**
     *
     * @param vendor 返回预取失败运营商
     * @param ret 返回失败原因
     */
    void onTokenFailed(String vendor, String ret);
}

SDK返回码

编号

返回描述

建议

600000

获取token成功

无

600001

唤起授权页成功

无

600002

唤起授权页失败

建议切换到到其他登录方式

600004

获取运营商配置信息失败

创建工单

600005

手机终端不安全

建议切换到到其他登录方式

600007

未检测到sim卡

提示用户检查sim卡后重试

600008

蜂窝网络未开启

提示用户开启移动网络后重试

600009

无法判断运营商

创建工单

600010

未知异常

创建工单

600011

获取token失败

切换到其他登录方式

600012

获取预取号失败

无

600013

运营商维护升级 该功能不可用

创建工单

600014

运营商维护升级,该功能已达最大调用次数

创建工单

600015

接口超时

切换到其他登录方式

600017

AppID、Appkey解析失败

创建工单

600021

点击登录时检测到运营商已切换

切换到其它登录方式

600024

终端环境检查⽀持认证

无

600025

终端检测参数错误

检查传⼊参数类型与范围是否正确

600026

授权页已加载时不允许调用加速或预取号接口

检查是否有授权页拉起后,去调用加速或预取号接口,该行为不允许

5.8获取运营商信息(getCurrentCarrierName)

/**
     * 返回默认上网卡运营商
     * @return CMCC-中国移动 CTCC-中国电信 CUCC-中国联通
     */
public String getCurrentCarrierName()

5.9获取verifyId(getVerifyId)

/**
     * 设备唯一识别标识上传接口,如需开启调用阈值设置,请务必上传,以更好识别并防控恶意重复认证的设备。android Q上传加密android ID,非android Q上传加密imei
     * @param context 
     * @return
     */
public String getVerifyId(Context context)