Android客户端接入

本文为您介绍Android客户端本机号码校验的集成方法及接口的功能示例。

说明

在使用过程中如有疑问,可以提交工单联系阿里云技术工程师处理。

接入步骤

下载SDK

登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,根据页面提示下载并解压对应SDK。

创建认证方案

您导入项目或调用API接口时,会用到方案Code等参数信息,请先在号码认证产品控制台创建认证方案,获取方案Code等参数信息。

导入项目

  1. 设置minSdkVersion和compileSdkVersion版本。

    minSdkVersion:号码认证SDK最低依赖版本为21,创建新项目时minSdkVersion不能低于21。

    compileSdkVersion:号码认证SDK最低依赖版本为30,创建新项目时compileSdkVersion不能低于30。

    lQLPJwRrQmTx-IjNAU_NAf-wjoE4EAEBBikEuGvmAQCeAA_511_335.png

  2. 导入aar产物并添加依赖。

    在使用号码认证功能的module中引入相关SDK,将3个aar全部导入module libs文件夹。

    29

    • authsdk是号码认证主aar,实现一键登录及本机号码校验功能;

    • logger组件是authsdk使用的日志组件必须引入依赖;

    • main组件是authsdk使用的基础功能组件必须引入依赖;

    modulebuild.gradle文件中找到dependencies,添加如下引用:

    implementation fileTree(dir: 'libs', include: ['*.aar'])
    implementation 'androidx.appcompat:appcompat:1.3.1'

    30

  3. 创建签名文件。

    参考studio创建签名文件创建签名文件,此签名文件在创建方案号时使用,签名文件放置在module下,文件名及文件路径无设置要求。

    以Demo为例,将签名文件放置在app/sig-adaptation/debug/文件夹下,则需在module的build.gradle文件中指向该签名。31

  4. 查看签名。

    使用Studio右侧面板,选择Gradle > 项目名称 > 签名文件module > Tasks > android > signingReport,查看签名

    32

    说明

    包签名获取方式如下:

    • 方式一:上图的下方输出的MD5值移除冒号,将大写字母转换为小写字母即可生成包签名

    • 方式二:请通过手机终端下载并安装Android App签名获取工具,获取Android App的包签名信息。

添加权限

AndroidMainfest.xml清单文件中添加权限。

  • 必要权限(aar中已申请,用户无需单独配置)

<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络访问 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 检查wifi网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 检查网络状态 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 允许修改网络状态 -->
  • 非必要权限(不配置此权限,不影响使用本机号码校验功能)

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!--允许访问电话状态-->

完整的功能交互流程请参见本机号码校验交互流程

SDK方法说明

获取认证实例

/**
 *  获取该类的单例实例对象
 * @param context Android上下文建议使用applicationcontext
 * @param tokenListener 需要实现的获取token回调
 *  @return 单例实例对象
 */
public static PhoneNumberAuthHelper getInstance(Context context, TokenResultListener tokenResultListener)

使用示例

TokenResultListener mTokenResultListener = new TokenResultListener() {
    @Override
    public void onTokenSuccess(String s) {
         //token获取成功业务处理
    }

    @Override
    public void onTokenFailed(String s) {
         //token获取失败业务处理
    }
};
PhoneNumberAuthHelper mPhoneNumberAuthHelper = PhoneNumberAuthHelper.getInstance(this, mTokenResultListener);

必调方法:设置SDK密钥(setAuthSDKInfo)

/**
 *  初始化SDK调用参数,App生命周期内调用一次
 *  @param  secretInfo AppID、AppKey、方案号
 */
public void setAuthSDKInfo(String secretInfo)

使用示例

mPhoneNumberAuthHelper.setAuthSDKInfo(secretInfo);

必调方法:本机号码校验获取Token(getVerifyToken)

使用前先调用setAuthListener接口。

/**
     * 获取认证Token
     *
     * @param totalTimeout 超时时间,单位ms
     */
public void getVerifyToken(final int totalTimeout)

使用示例

mPhoneNumberAuthHelper.setAuthListener(mVerifyListener);
mPhoneNumberAuthHelper.getVerifyToken(5000);

选调方法:加速获取本机号码校验Token(accelerateVerify)

/**
     * 加速本机号码校验
     *
     * @param overdueTimeMills 超时时间ms
     * @param listener         结果回调
     */
@AuthNumber
public void accelerateVerify(final int overdueTimeMills, final PreLoginResultListener listener)

使用示例

mPhoneNumberAuthHelper.accelerateVerify(timeout, new PreLoginResultListener() {
    @Override
    public void onTokenSuccess(String vendor) {
        //加速成功业务逻辑处理
    }

    @Override
    public void onTokenFailed(String vendor, String errorMsg) {
      //加速失败业务逻辑处理
    }
});

本机号码校验示例

////1、创建实例
mVerifyListener = new TokenResultListener() {
            @Override
            public void onTokenSuccess(String s) {
               //token获取成功业务处理
            }

            @Override
            public void onTokenFailed(final String s) {
                //token获取失败业务处理
            }
        };
 mPhoneNumberAuthHelper = PhoneNumberAuthHelper.getInstance(getApplicationContext(), mVerifyListener);

//2、环境校验
mPhoneNumberAuthHelper.checkEnvAvailable(PhoneNumberAuthHelper.SERVICE_TYPE_AUTH);

//3.1加速校验
 mPhoneNumberAuthHelper.accelerateVerify(5000, new PreLoginResultListener() {
            @Override
            public void onTokenSuccess(String vendor) {
                //加速成功业务逻辑处理
            }

            @Override
            public void onTokenFailed(String vendor, String errorMsg) {
                 //加速失败业务逻辑处理
            }
        });
//3.2、 获取校验token
mPhoneNumberAuthHelper.setAuthListener(mVerifyListener);
mPhoneNumberAuthHelper.getVerifyToken(timeout);
//4、去自己服务端进行token校验
//开发者自己app的服务端对接阿里号码认证,并提供接口给app调用
//此处调用服务接口将本机号码校验token以及手机传递过去