Android SDK 接入

本文是Android客户端SDK 集成说明文档。

1. 概述

官网SDK&Demo下载后进行解压,解压后包含:

  • SDKDemo 示例程序

  • SDK 依赖包

下载AppSignGet.apk用来获取对应包名的APP签名信息。

2. 前期准备

2.1 准备工作

如果应用开启了手机号认证服务,请确保终端设备已经开启4G网络(联通、移动支持3G网络,但接口耗时会增加),手机号认证授权之后,联通电信可立即使用,移动需等待10分钟后使用。

2.2 接入流程

image.png

2.3 运行demo工程

  1. 解压Android Demo工程

  2. 需要将包名、应用ID(appId)、应用密钥(appKey)、修改为正确的值。

  3. 修改FetchAccessTokenCallBackImpl.fetchAccessToken方法,完成获取应用授权token。

2.4 搭建开发环境

应用必须运行在Android 5.0+平台上,需要支持androidx, compileSdk 30+。

2.4.1 导入aar

将下载SDK拷贝到项目libs目录下

导入SDK

2.4.2 添加依赖

添加依赖

2.4.3 混淆忽略

若开启资源混淆,需要配置

# etas 对外提供的类不被混淆
-keep public class com.esandinfo.etas.ETASManager** { *; }
-keep public class com.esandinfo.etas.EtasResult** { *; }
-keep public class com.esandinfo.etas.IfaaBaseInfo {*;}
-keep public class com.esandinfo.etas.IfaaBaseInfo$* {*;}
-keep public class com.esandinfo.etas.IfaaCommon {*;}
-keep public class com.esandinfo.etas.IfaaCommon$* {*;}
-keep public class com.esandinfo.etas.model.json.** {*;}
-keep public class com.esandinfo.etas.biz.** {*;}
-keep public class com.esandinfo.etas.IfaaRequestBaseInfo {*;}
-keep public class com.esandinfo.etas.callback.** {*;}
-keep public class com.esandinfo.etas.utils.IfaaClient {*;}
# ifaa 原始接⼝不被混淆
-keep class org.ifaa.** {*;}
# 保留所有的本地native⽅法不被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
#号码认证配置
-keep public class  R.drawable.authsdk*
-keep public class  R.layout.authsdk*
-keep public class  R.anim.authsdk*
-keep public class  R.id.authsdk*
-keep public class  R.string.authsdk*
-keep public class  R.style.authsdk*
#SDK不被混淆
-keep class com.idsmanager.doraemonlibrary.** {*;}

2.4.4 权限添加

<uses-permission android:name="android.permission.INTERNET" />   <!--网络权限-->
<uses-permission android:name="android.permission.USE_FINGERPRINT" />   <!--指纹权限-->
    <uses-permission android:name="android.permission.MANAGE_FINGERPRINT" tools:ignore="ProtectedPermissions"/>  <!--指纹管理权限-->
<uses-permission android:name="cn.org.ifaa.permission.USE_IFAA_MANAGER" />    <!--⼈脸权限-->
<uses-permission android:name="android.permission.USE_FACERECOGNITION" />
<uses-permission android:name="oppo.permission.USE_FACE" /> <!--个别⼚商⼈脸权限-->
<uses-permission android:name="android.permission.CAMERA" /><!--相机权限,需要⽤户进⾏授权-->
<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.WRITE_EXTERNAL_STORAGE" /> <!-- 本地信息缓存 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 开关Wi-Fi状态,解决中国机型移动网络权限问题需要 -->

2.4.5 网络权限配置

修改AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.idsmanager.doraemondemoactivity">

...

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

</manifest>

res目录下创建xml目录以及network_security_config.xml文件

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
    <domain-config cleartextTrafficPermitted="true" >
        <domain includeSubdomains="true">enrichgw.10010.com</domain> <!-- 联通内部5G请求域名,开发者需要添加 -->
        <domain includeSubdomains="true">onekey.cmpassport.com</domain>  <!-- 移动内部请求域名,开发者需要添加 -->

    </domain-config>
</network-security-config>

添加Activity 声明

AndroidManifest.xml添加Activity声明

        <!--联通电信授权页-->
        <!--如果不需要使用窗口模式,不要使用authsdk_activity_dialog主题,会出现异常动画-->
        <!--如果需要使用authsdk_activity_dialog主题,则screenOrientation一定不能指定明确的方向,
            比如portrait、sensorPortrait,在8.0的系统上不允许窗口模式指定orientation,会发生Crash,需要指定为behind,
            然后在授权页的前一个页面指定具体的orientation-->
        <!--  使用弹窗模式必须添加。-->
        <activity
            android:name="com.mobile.auth.gatewayauth.LoginAuthActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:exported="false"
            android:launchMode="singleTop"
            android:theme="@style/authsdk_activity_dialog" />
        <!--二次弹窗界面-->
        <activity
            android:name="com.mobile.auth.gatewayauth.PrivacyDialogActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:exported="false"
            android:launchMode="singleTop"
            android:screenOrientation="behind"
            android:theme="@style/authsdk_activity_dialog" />
        <!--协议页面webview-->
        <activity
            android:name="com.mobile.auth.gatewayauth.activity.AuthWebVeiwActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:exported="false"
            android:launchMode="singleTop"
            android:screenOrientation="behind" />
    

2.4.6 Support 包

使用androidx

androidx.appcompat:appcompat:1.3.1

com.android.support.constraint:constraint-layout:1.0.2

或更高版本

2.4.7 获取app md5 签名值

  1. 使用Android studio gradle,点击signingReport,得到MD5签名值,将冒号去掉并转小写。

说明

debug包和release包签名是不一样的,避免用debug的签名值用于生产测试。

111

  1. 下载AppSignGet.apk用来获取对应包名的APP签名信息。

3. SDK 调用说明

需要在APP中集成安全认证客户端SDK,并在服务端完成API对接。应用密钥和服务密钥获取请查看应用管理。

4. 手机号认证SDK方法说明

4.1 主类DoraemonManager介绍

4.1.1 初始化

此接口需要开发者调用服务端SDK获取应用授权Token接口,自定义回调函数,然后通过FetchAccessTokenCallBackImpl回传给移动端SDK

重要

初始化只需要在APP启动的时候调用一次,可以放到启动画面中完成,失败后需要切换到其他登录方式。

不能在初始化成功后立即调用本机手机号码一键登录(phoneNumberLogin)。

/**
  * 初始化 DoraemonManager
  *
  * @param context
  * @param appId             应用密钥,找到安全认证应用,应用详情中拷贝 应用ID
  * @param appKey                   应用密钥,找到安全认证应用,点击 复制秘钥
  * @param fetchAccessTokenCallBack 获取accessToken回调
*/
DoraemonManager.init(context, appId, appKey, new FetchAccessTokenCallBackImpl(), new DoraemonCallback() {
   @Override
   public void onFailure(Exception e) {
       Log.e(TAG, "DoraemonManager init faild", e);
       MainActivity.this.showToast("SDK初始化失败!" + e.getMessage());
   }

   @Override
   public void onSuccess(Object data) {
        // *不能在成功后直接调用phoneNumberLogin方法
       Log.e(TAG, "DoraemonManager init success");
       MainActivity.this.showToast("SDK初始化成功!");
   }
});

FetchAccessTokenCallBackImpl 需要获取AccessToken后返回给SDK,示例如下

public class FetchAccessTokenCallBackImpl implements FetchAccessTokenCallBack {
    private static final String TAG = FetchAccessTokenCallBackImpl.class.getSimpleName();
    /**
     * 获取AccessToken回调方法
     *
     * @return
     */
    @Override
    public AccessTokenInfoResult fetchAccessToken(FetchAccessTokenRequest fetchAccessTokenRequest) {
        AccessTokenInfoResult callbackResult = new AccessTokenInfoResult();
        try {
            AccessTokenInfo accessTokenInfo =new AccessTokenInfo();
            /**
             * TODO:获取应用授权Token
             * 需要根据文档开发后端接口获取,获取后返回接口
             * Token必须是同步获取的
             * 所需参数可以通过‘fetchAccessTokenRequest’对象获取,例如:fetchAccessTokenRequest.getMobileExtendParamsJson()
             * https://help.aliyun.com/zh/idaas/security-authentication/developer-reference/fetchaccesstoken?spm=a2c4g.11186623.0.i1
             */
            accessTokenInfo.setAccess_token(?);
            ////refesh_token没有可以不用设置
            accessTokenInfo.setRefresh_token(?);
            accessTokenInfo.setExpires_in(?);
            callbackResult.setSuccess(true);
            callbackResult.setMessage("获取accessToken成功。");
            callbackResult.setAccessTokenInfo(accessTokenInfo);
        } catch (Exception e) {
            Log.e(TAG, "getAccessTokenRun exception", e);
            callbackResult.setSuccess(false);
            callbackResult.setMessage(e.getMessage());
        }
        return callbackResult;
    }
}

4.1.2 本机手机号码一键登录

 /**
   * 手机号码一键登录
   *
   * @param activity
   * @param doraemonCallback 回调接口
   * @param authUIConfig     定制UI
   */
DoraemonManager.phoneNumberLogin(this, new DoraemonCallback() {
    @Override
    public void onFailure(Exception e) {
        Log.e(TAG, "phoneNumberLogin faild", e);
        MainActivity.this.showToast("手机号登录失败!" + e.getMessage());
    }

    @Override
    public void onSuccess(Object data) {
         Log.e(TAG, "DoraemonManager init success");
         MainActivity.this.showToast("手机号码登录成功!" + data);
     }
}, baseUIConfig);

一键登录页面定制类,示例如下

public class FullPortConfig extends BaseUIConfig {
    private final String TAG = "全屏竖屏样式";

    public FullPortConfig(Activity activity) {
        super(activity);
    }


    @Override
    public void configAuthPage(PhoneNumberAuthHelper mAuthHelper) {
        mAuthHelper.setUIClickListener(new AuthUIControlClickListener() {
            @Override
            public void onClick(String code, Context context, String jsonString) {
                JSONObject jsonObj = null;
                try {
                    if (!TextUtils.isEmpty(jsonString)) {
                        jsonObj = new JSONObject(jsonString);
                    }
                } catch (JSONException e) {
                    jsonObj = new JSONObject();
                }
                switch (code) {
                    //点击授权页默认样式的返回按钮
                    case ResultCode.CODE_ERROR_USER_CANCEL:
                        Log.e(TAG, "点击了授权页默认返回按钮");
                        mAuthHelper.quitLoginPage();
                        mActivity.finish();
                        break;
                    //点击授权页默认样式的切换其他登录方式,会关闭授权页
                   case ResultCode.CODE_ERROR_USER_SWITCH:
                        Log.e(TAG, "点击了授权页默认切换其他登录方式");
                        break;
                    //点击一键登录按钮会发出此回调
                    //当协议栏没有勾选时,点击按钮会有默认toast 如果不需要或者希望自定义内容 setLogBtnToastHidden(true)隐藏默认Toast
                    //通过此回调自己设置toast
                    case ResultCode.CODE_ERROR_USER_LOGIN_BTN:
                        if (!jsonObj.optBoolean("isChecked")) {
                            Toast.makeText(mContext, "isCheck", Toast.LENGTH_SHORT).show();
                        }
                        break;
                    //checkbox状态改变触发此回调
                    case ResultCode.CODE_ERROR_USER_CHECKBOX:
                        Log.e(TAG, "checkbox状态变为" + jsonObj.optBoolean("isChecked"));
                        break;
                    //点击协议栏触发此回调
                    case ResultCode.CODE_ERROR_USER_PROTOCOL_CONTROL:
                        Log.e(TAG, "点击协议," + "name: " + jsonObj.optString("name") + ", url: " + jsonObj.optString("url"));
                        break;
                    default:
                        break;

                }

            }
        });
        mAuthHelper.removeAuthRegisterXmlConfig();
        mAuthHelper.removeAuthRegisterViewConfig();
        //添加自定义切换其他登录方式
        mAuthHelper.addAuthRegistViewConfig("switch_msg", new AuthRegisterViewConfig.Builder()
                .setView(initSwitchView(350))
                .setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
                .setCustomInterface(new CustomInterface() {
                    @Override
                    public void onClick(Context context) {
                        Toast.makeText(mContext, "切换到短信登录方式1", Toast.LENGTH_SHORT).show();

                        mAuthHelper.quitLoginPage();
                    }
                }).build());
        int authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
        if (Build.VERSION.SDK_INT == 26) {
            authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_BEHIND;
        }
        mAuthHelper.setAuthUIConfig(new AuthUIConfig.Builder()
                .setAppPrivacyOne("《自定义隐私协议》", "https://****/user")
                .setAppPrivacyTwo("《》", "https://***")
                .setAppPrivacyColor(Color.GRAY, Color.parseColor("#002E00"))
                //隐藏默认切换其他登录方式
                .setSwitchAccHidden(true)
                //隐藏默认Toast
                .setLogBtnToastHidden(true)
                //沉浸式状态栏
                .setNavColor(Color.parseColor("#026ED2"))
                .setStatusBarColor(Color.parseColor("#026ED2"))
                .setWebViewStatusBarColor(Color.parseColor("#026ED2"))


                .setLightColor(false)
                .setWebNavTextSizeDp(20)
                //图片或者xml的传参方式为不包含后缀名的全称,需要文件需要放在drawable或drawable-xxx目录下 in_activity.xml, mytel_app_launcher.png
                .setAuthPageActIn("in_activity", "out_activity")
                .setAuthPageActOut("in_activity", "out_activity")
                .setVendorPrivacyPrefix("《")
                .setVendorPrivacySuffix("》")
                .setPageBackgroundPath("page_background_color")
                .setLogoImgPath("mytel_app_launcher")
                //一键登录按钮三种状态背景示例login_btn_bg.xml
                .setLogBtnBackgroundPath("login_btn_bg")
                .setScreenOrientation(authPageOrientation)
                .create());
    }

4.1.3 检查本机是否支持一键登录

/**
  * 检查本机是否支持一键登录
  * @param i
  * @param doraemonCallback
  */
DoraemonManager.checkEnvAvailable(PhoneNumberAuthHelper.SERVICE_TYPE_LOGIN, new DoraemonCallback() {
     @Override
     public void onFailure(Exception e) {
         Log.e(TAG, "phoneNumberLogin faild", e);
         MainActivity.this.showToast("checkEnvAvailable失败!" + e.getMessage());
     }

     @Override
     public void onSuccess(Object data) {
         Log.e(TAG, "DoraemonManager init success");
         MainActivity.this.showToast("checkEnvAvailable成功!" + data);
     }
});

4.1.4 退出一键号码登录页

DoraemonManager.quitLoginPage();

4.2 手机号码验证

用户输入手机号码,验证是否是本机手机号

/**
  * 手机号码验证
  *
  * @param phoneNumber      手机号码
  * @param doraemonCallback 回调接口
  */
DoraemonManager.phoneNumberVerify(phoneNum, new DoraemonCallback() {
     @Override
     public void onFailure(Exception e) {
         Log.e(TAG, "phoneNumberLogin faild", e);
         MainActivity.this.showToast("手机号认证失败!" + e.getMessage());
     }

     @Override
     public void onSuccess(Object data) {
         Log.e(TAG, "DoraemonManager init success");
         MainActivity.this.showToast("手机号码认证成功!" + data);
     }
});

4.3 校验JwtToken

最后需要校验JwtToken来确保此次认证结果真实有效。

5. 手机号码认证授权页面说明

5.1 全屏授权页面设计规范

编组..png

状态栏

  • setStatusBarColor: 设置状态栏颜色(需5.0以上系统版本)。

  • setLightColor: 设置状态栏文字颜色(系统版本6.0以上可设置黑色、白色,true为黑色)。

  • setStatusBarHidden: 设置状态栏是否隐藏。

  • setStatusBarUIFlag: 设置状态栏UI属性,View.SYSTEM_UI_FLAG_LOW_PROFILE, View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN。

  • setWebViewStatusBarColor: 设置协议页状态栏颜色(系统版本5.0以上可设置)不设置则与授权页设置一样)

导航栏

  • setNavColor: 设置导航栏主题色。

  • setNavText: 设置导航栏标题文字内容。

  • setNavTextColor: 设置导航栏标题文字颜色。

  • setNavTextSize: 设置导航栏标题文字大小。

  • setNavReturnImgPath: 设置导航栏返回键图片。

  • setNavReturnHidden: 设置导航栏返回按钮是否隐藏。

  • setNavHidden: 设置导航栏是否隐藏。

  • navReturnImgWidth: 设置导航栏返回键图片宽度,单位dp。

  • navReturnImgHeight: 设置导航栏返回键图片高度,单位dp。

  • setNavReturnHidden: 隐藏导航栏返回按钮。

  • setNavReturnScaleType: 设置返回按钮图片的缩放模式。

  • setWebNavColor: 设置协议页顶部导航栏背景色,不设置则与授权页一致。

  • setWebNavTextColor: 设置协议页顶部导航栏标题颜色,不设置则与授权页一致。

  • setWebNavTextSize: 设置协议页顶部导航栏文字大小,不设置则与授权页一致。

  • webNavReturnImgPath: 设置协议页导航栏返回按钮图片路径,不设置则与授权页一致。

  • useNavFontAndPath:设置导航栏文本使用自定义字体。

  • setNavTypeface:设置导航栏文本使用系统字体。

Logo

  • setLogoImgPath: 设置logo图片。

  • setLogoHidden: 设置logo是否隐藏。

  • setLogoWidth: 设置logo宽度。

  • setLogoHeight: 设置logo高度。

  • setLogoOffsetY: 设置logo控件相对导航栏顶部的位移,单位dp。

  • setLogoOffsetY_B: 设置logo控件相对底部的位移,单位dp。

  • setLogoHidden: 设置logo是否隐藏。

  • setLogoScaleType: 设置Logo图片缩放模式。

Slogan

  • setSloganText: 设置slogan文字内容。

  • setSloganTextColor: 设置slogan文字颜色。

  • setSloganTextSize: 设置slogan文字大小。

  • setSloganOffsetY: 设置slogan相对导航栏顶部的位移,单位dp。

  • setSloganOffsetY_B:设置slogan相对底部的位移,单位dp。

  • useSloganFontAndPath:设置slogan文本使用自定义字体。

  • setSloganTypeface:设置slogan文本使用系统字体。

掩码栏

  • setNumberColor: 设置掩码字体颜色。

  • setNumberSize: 设置掩码字体大小。

  • setNumberOffsetY: 设置掩码栏控件相对导航栏顶部的位移,单位dp。

  • setNumberOffsetY_B: 设置掩码栏控件相对底部的位移,单位dp。

  • setNumberFieldOffsetX: 设置号码栏相对于默认位置的X轴位置,单位dp。

  • setNumberLayoutGravity: 设置手机号掩码的布局对齐方式,只支持Gravity.CENTER_HORIZONTAL, Gravity.LEFT,Gravity.RIGHT三种对齐方式。

  • useNumberFontAndPath:设置掩码文本使用自定义字体。

  • setNumberTypeface:设置掩码文本使用系统字体。

编组..png

登录按钮

  • setLogBtnText: 设置登录按钮文字(文字必须包含“登录”或“注册”)。

  • setLogBtnTextColor: 设置登录按钮文字颜色。

  • setLogBtnTextSize: 设置登录按钮文字大小。

  • setLogBtnWidth: 设置登录按钮宽度,单位dp。

  • setLogBtnHeight: 设置登录按钮高度,单位dp。

  • setLogBtnMarginLeftAndRight: 设置登录按钮相对于屏幕左右边缘的边距。

  • setLogBtnBackgroundPath: 设置登录按钮背景图片路径。

  • setLogBtnOffsetX: 设置登录按钮X轴偏移量,如果设置了setLogBtnMarginLeftAndRight,并且布局对齐方式为左对齐或者右对齐,则会在margin的基础上再增加offsetX的偏移量,如果是居中对齐,则会在居中的基础上再做offsetX的偏移。

  • setLogBtnOffsetY: 设置登录按钮相对导航栏顶部的位移,单位dp。

  • setLogBtnOffsetY_B: 设置登录按钮相对底部的位移,单位dp。

  • setLoadingImgPath: 设置登录loading dialog背景图片路径。

  • setLogBtnLayoutGravity: 设置登录按钮布局对齐方式,只支持Gravity.CENTER_HORIZONTAL、Gravity.LEFT,Gravity.RIGHT三种对齐方式。

  • useLogBtnFontAndPath:设置登录按钮文本使用自定义字体。

  • setLogBtnTypeface:设置登录按钮文本使用系统字体。

切换到其他方式

  • setSwitchAccHidden: 设置切换按钮点是否可见。

  • setSwitchAccText: 设置切换按钮文字内容。

  • setSwitchAccTextColor: 设置切换按钮文字颜色。

  • setSwitchAccTextSize: 设置切换按钮文字大小。

  • setSwitchOffsetY: 设置切换按钮相对导航栏顶部的位移,单位dp。

  • setSwitchOffsetY_B: 设置切换按钮相对底部的位移,单位dp。

  • useSwitchFontAndPath:设置切换按钮文本使用自定义字体。

  • setSwitchTypeface:设置切换按钮文本使用系统字体。

自定义控件区(如其他方式登录)

您可以在除了协议、掩码、登录按钮之外的区域添加自定义控件。支持两种方式添加自定义控件

  1. addAuthRegisterViewConfig: 添加代码编写的自定义控件至登录授权页。

  2. addAuthRegisterXmlConfig: 添加有XML回执的自定义控件至登录授权页。

协议栏

  • setAppPrivacyOne: 自定义第一条隐私条款。

  • setAppPrivacyTwo: 自定义第二条隐私条款。

  • setAppPrivacyColor: 设置隐私条款名称颜色(基础文字颜色,协议文字颜色)

  • setPrivacyOffsetY: 设置隐私条款相对导航栏顶部的位移,单位dp。

  • setPrivacyOffsetY_B: 设置隐私条款相对底部的位移,单位dp。

  • setPrivacyState: 设置隐私条款是否默认勾选。

  • setProtocolGravity: 设置隐私条款文字对齐方式,单位Gravity.xx。

  • setPrivacyTextSize: 设置隐私条款文字大小。

  • setPrivacyMargin: 设置隐私条款距离手机左右边缘的边距,单位dp。

  • setPrivacyBefore: 设置开发者隐私条款前置自定义文案。

  • setPrivacyEnd: 设置开发者隐私条款尾部自定义文案。

  • setCheckboxHidden: 设置复选框是否隐藏。

  • setUncheckedImgPath: 设置复选框未选中时的图片。

  • setCheckedImgPath: 设置复选框选中时的图片。

  • setVendorPrivacyPrefix: 设置运营商协议前缀符号,只能设置一个字符<、(、[、(、【、『中的一个。

  • setVendorPrivacySuffix: 设置运营商协议后缀符号,只能设置一个字符,且只能设置 >、)、]、)、】、』中的一个。

  • setProtocolLayoutGravity: 设置隐私栏的布局对齐方式,该接口控制了整个隐私栏(包含checkbox)在其父布局中的对齐方式,而setProtocolGravity控制的是隐私协议文字内容在文本框中的对齐方式。

  • setPrivacyOffsetX: 设置隐私栏X轴偏移量,单位dp。

  • setLogBtnToastHidden: 设置checkbox未勾选时,点击登录按钮toast是否显示。

  • useProtocolFontAndPath:设置协议文本使用自定义字体。

  • setProtocolTypeface:设置协议文本使用系统字体。

  • setPrivacyOneColor:授权页协议1文本颜色。

  • setPrivacyTwoColor:授权页协议2文本颜色。

  • setPrivacyThreeColor:授权页协议3文本颜色。

  • setPrivacyOperatorColor:授权页运营商协议文本颜色。

其他全屏页面属性

  • setAuthPageActIn: 设置授权页进场动画。

  • setAuthPageActOut: 设置授权页退出动画。

  • setScreenOrientation: 设置屏幕方向,取值为ActivityInfo中的屏幕方向常量值,比如ActivityInfo.SCREEN_ORIENTATION_LANDSCADE。

  • setPageBackgroundPath: 设置授权页背景图drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/loading.png,则传入参数为“loading”,setPageBackgroundPath("loading")。

5.2 弹窗授权页面设计规范

编组 2..png

其他弹窗页面属性

  • setAuthPageActIn: 设置授权页进场动画。

  • setAuthPageActOut: 设置授权页退出动画。

  • setScreenOrientation: 设置屏幕方向,取值为ActivityInfo中的屏幕方向常量值,比如ActivityInfo.SCREEN_ORIENTATION_LANDSCADE。

  • setPageBackgroundPath: 设置授权页背景图drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/loading.png,则传入参数为“loading”,setPageBackgroundPath("loading")。

  • setDialogWidth: 设置弹窗模式授权页宽度,单位dp,设置大于0即为弹窗模式。

  • setDialogHeight: 设置弹窗模式授权页高度,单位dp,设置大于0即为弹窗模式。

  • setDialogOffsetX: 设置弹窗模式授权页X轴偏移量,单位dp。

  • setDialogOffsetY: 设置弹窗模式授权页Y轴偏移,单位dp。

  • setTapAuthPageMaskClosePage:设置授权页弹窗模式,点击非弹窗区域关闭授权页。true,关闭。false,不关闭。

  • setDialogButton: 设置授权页是否居于底部。

  • 蒙层设置:通过修改授权页的弹窗主题实现,默认为android:theme = "@styleantusdk_activity_dialog",可通过开发者自己实现的逻辑设定蒙层的样式。

5.3 授权页配置说明

5.3.1 配置授权页导航栏

方法

类型

说明

setStatusBarColor

int

设置状态栏颜色(系统版本5.0以上可设置)。

setLightColor

boolean

设置状态栏字体颜色(系统版本6.0以上可设置黑色、白色,默认为黑色)。取值:

  • true:表示字体颜色为黑色。

  • false:表示字体颜色为白色。

setNavColor

int

设置导航栏颜色。

setNavText

String

设置导航栏标题文字。

setNavTextColor

int

设置导航栏标题文字颜色。

setNavTextSize

int

设置导航栏标题文字大小。

useNavFontAndPath

boolean,String

设置导航栏文本是否使用自定义字体。自定义字体名称,包含字体格式,如xxx.ttf,文件需放置在assets下。

  • true:使用自定义字体。

  • false:不使用自定义字体。

setNavTypeface

Typeface

设置导航栏文本使用系统字体。

参数包含:Typeface.SANS_SERIF、Typeface.SERIF、Typeface.MONOSPACE。

setNavReturnImgPath

String

设置导航栏返回键图片路径(即drawable下文件名称,但无需带文件格式)。

setNavReturnHidden

boolean

设置导航栏返回按钮隐藏。取值:

  • true:表示隐藏。

  • false:表示显示。

setNavHidden

boolean

设置默认导航栏是否隐藏。取值:

  • true:表示隐藏。

  • false:表示显示。

setStatusBarHidden

boolean

设置状态栏是否隐藏。取值:

  • true:表示隐藏。

  • false:表示显示。

setStatusBarUIFlag

int

设置状态栏UI属性,属性类型:

  • View.SYSTEM_UI_FLAG_LOW_PROFILE:非全屏显示状态,状态栏的部分图标会被隐藏。

  • View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:全屏显示。

setWebViewStatusBarColor

int

设置协议页状态栏颜色(系统版本5.0以上可设置),不设置则与授权页设置一致。

setWebNavColor

int

设置协议页顶部导航栏背景色,不设置则与授权页设置一致。

setWebNavTextColor

int

设置协议页顶部导航栏标题颜色,不设置则与授权页设置一致。

setWebNavTextSize

int

设置协议页顶部导航栏文字大小,不设置则与授权页设置一致。

webNavReturnImgPath

String

设置协议页导航栏返回按钮图片路径,不设置则与授权页设置一致。

setBottomNavColor

int

设置底部虚拟按键背景色(系统版本5.0以上可设置)。

setNavTextSizeDp

int

设置导航栏标题文字大小(单位:dp,字体大小不随系统变化)。

setNavReturnImgDrawable

Drawable

设置导航栏返回键图片。

5.3.2 授权页Logo

方法

类型

说明

setLogoHidden

boolean

设置Logo是否隐藏。取值:

  • true:表示隐藏。

  • false:表示显示。

setLogoImgPath

String

设置Logo图片路径(即drawable下文件名称,但无需带文件格式)。

setLogoWidth

int

设置Logo控件宽度(单位:dp)。

setLogoHeight

int

设置Logo控件高度(单位:dp)。

setLogoOffsetY

int

设置Logo控件相对导航栏顶部的位移(单位:dp)。

setLogoOffsetY_B

int

设置Logo控件相对底部的位移(单位:dp)。

setLogoScaleType

ImageView.ScaleType

设置Logo图片缩放模式。模式类型:

  • center:保持原图大小,显示在ImageView的中心。当原图的size大于ImageViewsize,超过部分裁剪处理。

  • centerCrop:原图的中心对准ImageView的中心,等比例放大原图,直到填满ImageView为止,对原图超过ImageView的部分做裁剪处理。

  • centerInside:图片居中显示,按比例缩小原图的size等于或小于ImageView。如果原图的size本身就小于ImageViewsize,则原图的size不做任何处理,居中显示在ImageView。

  • matrix:不改变原图的大小,从ImageView左上角绘制原图,超过部分裁剪处理。

  • fitCenter:原图按比例扩大或缩小到ImageViewImageView的高度,居中显示。

  • fitEnd:原图按比例扩大或缩小到ImageView的高度,显示在ImageView的下部分位置。

  • fitStart:原图按比例扩大或缩小到ImageView的高度,显示在ImageView的上部分位置。

  • fitXY:原图按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满ImageView。

5.3.3 授权页Slogan

方法

类型

说明

setSloganText

String

设置Slogan文字内容。

setSloganTextColor

int

设置Slogan文字颜色。

setSloganTextSize

int

设置Slogan文字大小。

setSloganOffsetY

int

设置Slogan相对导航栏顶部的位移(单位:dp)。

setSloganOffsetY_B

int

设置Slogan相对底部的位移(单位:dp)。

setSloganTextSizeDp

int

设置Slogan文字大小(单位:dp,字体大小不随系统变化)。

useSloganFontAndPath

boolean,String

设置slogan文本是否使用自定义字体。自定义字体名称,包含字体格式,如xxx.ttf,文件需放置在assets下。

  • true:使用自定义字体。

  • false:不使用自定义字体。

setSloganTypeface

Typeface

设置slogan文本使用系统字体。

参数包含:Typeface.SANS_SERIF、Typeface.SERIF、Typeface.MONOSPACE。

5.3.4 授权页号码栏

方法

类型

说明

setNumberColor

int

设置手机号码字体颜色。

setNumberSize

int

设置手机号码字体大小。

setNumFieldOffsetY

int

设置号码栏控件相对导航栏顶部的位移(单位:dp)。

setNumFieldOffsetY_B

int

设置号码栏控件相对底部的位移(单位:dp)。

setNumberFieldOffsetX

int

设置号码栏相对于默认位置的X 轴偏移量(单位:dp)。

setNumberLayoutGravity

int

设置手机号掩码的布局对齐方式,支持以下三种对齐方式:

  • Gravity.CENTER_HORIZONTAL:水平居中

  • Gravity.LEFT:左对齐

  • Gravity.RIGHT:右对齐

setNumberSizeDp

int

设置手机号码字体大小(单位:dp,字体大小不随系统变化)。

useNumberFontAndPath

boolean,String

设置手机号码文本是否使用自定义字体。自定义字体名称,包含字体格式如xxx.ttf,文件需放置在assets下。

  • true:使自定义字体。

  • false:不使用自定义字体。

setNumberTypeface

Typeface

设置手机号码文本使用系统字体。

参数包含:Typeface.SANS_SERIF、Typeface.SERIF、Typeface.MONOSPACE。

5.3.5 授权页登录按钮

方法

类型

说明

setLogBtnText

String

设置登录按钮文字。

setLogBtnTextColor

int

设置登录按钮文字颜色。

setLogBtnTextSize

int

设置登录按钮文字大小。

setLogBtnWidth

int

设置登录按钮宽度(单位:dp)。

setLogBtnHeight

int

设置登录按钮高度(单位:dp)。

setLogBtnMarginLeftAndRight

int

设置登录按钮相对于屏幕左右边缘边距(单位:dp)。

setLogBtnBackgroundPath

String

设置登录按钮背景图片的路径。

setLogBtnOffsetY

int

设置登录按钮相对导航栏顶部的位移(单位:dp)。

setLogBtnOffsetY_B

int

设置登录按钮相对底部的位移(单位:dp)。

setLoadingImgPath

String

设置登录loading dialog背景图片的路径。

setLogBtnOffsetX

int

设置登录按钮X轴偏移量。

说明

如果设置了setLogBtnMarginLeftAndRight,并且布局对齐方式为左对齐或右对齐,则会在margin的基础上再增加offsetX的偏移量,如果是居中对齐,则会在居中的基础上再做offsetX的偏移。

setLogBtnLayoutGravity

Gravity

设置登录按钮布局对齐方式,支持以下三种对齐方式:

  • Gravity.CENTER_HORIZONTAL:水平居中

  • Gravity.LEFT:左对齐

  • Gravity.RIGHT:右对齐

setLogBtnTextSizeDp

int

设置登录按钮文字大小(单位:dp,字体大小不随系统变化)。

setLogBtnBackgroundDrawable

Drawable

设置登录按钮背景图片的drawable对象。

setLoadingImgDrawable

Drawable

设置登录loading dialog背景图片的drawable对象。

useLogBtnFontAndPath

boolean,String

设置登录文本是否使用自定义字体。自定义字体名称,包含字体格式,如xxx.ttf,文件需放置在assets下。

  • true:使用自定义字体。

  • false:不使用自定义字体。

setLogBtnTypeface

Typeface

设置登录文本使用系统字体。

参数包含:Typeface.SANS_SERIF、Typeface.SERIF、Typeface.MONOSPACE。

5.3.6 授权页隐私栏

授权页面的隐私栏请勿用任何手段进行遮掩,否则会导致号码认证失败。

方法

类型

说明

setAppPrivacyOne

String, String

设置开发者隐私条款1名称和URL(名称,URL)。

setAppPrivacyTwo

String, String

设置开发者隐私条款2名称和URL(名称,URL)。

setAppPrivacyColor

int, int

设置隐私条款名称颜色(基础文字颜色,协议文字颜色)。

setPrivacyOffsetY

int

设置隐私条款相对导航栏顶部的位移(单位:dp)。

setPrivacyOffsetY_B

int

设置隐私条款相对底部的位移(单位:dp)。

setPrivacyState

boolean

设置隐私条款是否默认勾选。

setProtocolGravity

int

设置隐私条款文字对齐方式(单位:Gravity.xxx)。

setPrivacyTextSize

int

设置隐私条款文字大小(单位:sp)。

setPrivacyMargin

int

设置隐私条款距离手机左右边缘的边距(单位:dp)。

setPrivacyBefore

String

设置开发者隐私条款前置自定义文案。

setPrivacyEnd

String

设置开发者隐私条款尾部自定义文案。

setCheckboxHidden

boolean

设置复选框是否隐藏。取值:

  • true:表示隐藏。

  • false:表示显示。

setUncheckedImgPath

String

设置复选框未选中时图片路径。

setCheckedImgPath

String

设置复选框选中时图片路径。

setCheckBoxMarginTop

int

设置协议复选框上边距。

setVendorPrivacyPrefix

String

设置运营商协议前缀符号,只能设置一个字符,且只能设置<>、()、《》、【】、『』、[]、()中的一个。

setVendorPrivacySuffix

String

设置运营商协议后缀符号,只能设置一个字符,且只能设置<>、()、《》、【】、『』、[]、()中的一个。

setProtocolLayoutGravity

int

设置隐私栏的布局对齐方式。支持以下三种对齐方式:

  • Gravity.CENTER_HORIZONTAL:水平居中

  • Gravity.LEFT:左对齐

  • Gravity.RIGHT:右对齐

说明

该参数控制了整个隐私栏(包含check box)在其父布局中的对齐方式,而setProtocolGravity控制的是隐私协议文字内容在文本框中的对齐方式。

setPrivacyOffsetX

int

设置隐私栏X轴偏移量(单位:dp)。

setLogBtnToastHidden

boolean

设置check box未勾选时,点击登录按钮toast是否显示。

setPrivacyTextSizeDp

int

设置隐私条款文字大小(单位:dp,字体大小不随系统变化)。

setUncheckedImgDrawable

Drawable

设置复选框未选中时的图片的drawable对象。

setCheckedImgDrawable

Drawable

设置复选框选中时的图片的drawable对象。

useProtocolFontAndPath

boolean,String

设置协议文本是否使用自定义字体。自定义字体名称,包含字体格式,如xxx.ttf,文件需放置在assets下。

  • true:使用自定义字体。

  • false:不使用自定义字体。

setProtocolTypeface

Typeface

设置协议文本使用系统字体。

参数包含:Typeface.SANS_SERIF、Typeface.SERIF、Typeface.MONOSPACE。

setPrivacyOneColor

int

设置授权页协议1文本颜色。

setPrivacyTwoColor

int

设置授权页协议2文本颜色。

setPrivacyThreeColor

int

设置授权页协议3文本颜色。

setPrivacyOperatorColor

int

设置授权页运营商协议文本颜色。

5.3.7 切换方式控件

方法

类型

说明

setSwitchAccHidden

boolean

设置切换按钮点是否可见。

setSwitchAccText

String

设置切换按钮文字内容。

setSwitchAccTextColor

int

设置切换按钮文字颜色。

setSwitchAccTextSize

int

设置切换按钮文字大小。

setSwitchOffsetY

int

设置切换按钮相对导航栏顶部的位移(单位:dp)。

setSwitchOffsetY_B

int

设置切换按钮相对底部的位移(单位:dp)。

setSwitchAccTextSizeDp

int

设置切换按钮文字大小(单位:dp,字体大小不随系统变化)。

useSwitchFontAndPath

boolean,String

设置切换按钮文本是否使用自定义字体。自定义字体名称,包含字体格式,如xxx.ttf,文件需放置在assets下。

  • true:使用自定义字体。

  • false:不使用自定义字体。

setSwitchTypeface

Typeface

设置切换按钮文本使用系统字体。

参数包含:Typeface.SANS_SERIF、Typeface.SERIF、Typeface.MONOSPACE。

5.3.8 页面相关函数

方法

类型

说明

setAuthPageActIn

String

设置授权页进场动画(即anim下文件名称,但无需带文件格式)。

setAuthPageActOut

String

设置授权页退出动画(即anim下文件名称,但无需带文件格式)。

setScreenOrientation

int

设置屏幕方向。

说明

取值为ActivityInfo中的屏幕方向常量值,如:ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE。

setPageBackgroundPath

String

设置授权页背景图。

说明

drawable资源的目录,不需要加后缀,如图片在drawable中的存放目录是res/drawable-xxhdpi/loading.png,则传入参数为"loading",setPageBackgroundPath("loading")。

setDialogWidth

int

设置弹窗模式授权页宽度(单位:dp),设置大于0,即为弹窗模式。

setDialogHeight

int

设置弹窗模式授权页高度(单位:dp),设置大于0,即为弹窗模式。

setDiaLogoffsetX

int

设置弹窗模式授权页X轴偏移(单位:dp)。

setDiaLogoffsetY

int

设置弹窗模式授权页Y轴偏移(单位:dp)。

setTapAuthPageMaskClosePage

boolean

设置授权页弹窗模式,点击非弹窗区域关闭授权页。

  • true:关闭。

  • false:不关闭

setDialogBottom

boolean

设置授权页是否居于底部。

setPageBackgroundDrawable

Drawable

设置授权页背景图的drawable对象。

setProtocolAction

String

自定义协议页跳转Action。

setPackageName

String

配置自定义协议页跳转Action必须配置这个属性,值为App的包名。

setWebCacheMode

int

设置内置协议展示页webview缓存模式。

5.3.9 配置二次隐私协议弹窗页面

image

方法

参数类型

说明

privacyAlertIsNeedShow

boolean

设置二次隐私协议弹窗是否需要显示。取值:

  • true:表示显示。

  • false(默认值):表示不显示。

privacyAlertIsNeedAutoLogin

boolean

设置二次隐私协议弹窗点击按钮是否需要执行登录。取值:

  • true(默认值):表示需要执行。

  • false:表示不需要执行。

privacyAlertMaskIsNeedShow

boolean

设置二次隐私协议弹窗背景蒙层是否显示。

  • true(默认值):表示显示。

  • false:表示不显示。

privacyAlertMaskAlpha

float

设置二次隐私协议弹窗蒙层透明度。默认值0.3。

说明

取值范围0.3~1.0。

privacyAlertAlpha

float

设置二次隐私协议弹窗透明度。默认值1.0。

说明

取值范围0.3~1.0。

privacyAlertBackgroundColor

int

设置二次隐私协议弹窗背景色(同意并继续按钮区域)。

privacyAlertEntryAnimation

String

设置二次隐私协议弹窗显示自定义动画。

privacyAlertExitAnimation

String

设置二次隐私协议弹窗隐藏自定义动画。

privacyAlertCornerRadiusArray

int

设置二次隐私协议弹窗的四个圆角值。

说明

顺序为左上、右上、右下、左下,需要填充4个值,不足4个值则无效,如果值小于等于0则为直角。

privacyAlertAlignment

int

设置屏幕居中、居上、居下、居左、居右,默认居中显示。

privacyAlertWidth

int

设置弹窗宽度。

privacyAlertHeight

int

设置弹窗高度。

privacyAlertOffsetX

int

设置弹窗水平偏移量。(单位:dp)

privacyAlertOffsetY

int

设置弹窗竖直偏移量。(单位:dp)

privacyAlertTitleBackgroundColor

int

设置二次隐私协议弹窗标题背景颜色。

privacyAlertTitleAlignment

int

设置二次隐私协议弹窗标题支持居中、居左,默认居中显示。

privacyAlertTitleOffsetX

int

设置标题文字水平偏移量。(单位:dp)

privacyAlertTitleOffsetY

int

设置标题文字竖直偏移量。(单位:dp)

privacyAlertTitleContent

String

设置标题文本。

privacyAlertTitleTextSize

int

设置标题文字大小,默认值18 sp。

privacyAlertTitleColor

int

设置标题文字颜色。

privacyAlertContentBackgroundColor

int

设置协议内容背景颜色。

privacyAlertContentTextSize

int

设置服务协议文字大小,默认值16 sp。

privacyAlertContentAlignment

int

设置二次隐私协议弹窗协议文案支持居中、居左,默认居左显示。

privacyAlertContentColor

int

设置服务协议文字颜色。

privacyAlertContentBaseColor

int

设置服务协议非协议文字颜色。

privacyAlertContentHorizontalMargin

int

设置服务协议左右两侧间距。

privacyAlertContentVerticalMargin

int

设置服务协议上下间距。

privacyAlertBtnBackgroundImgPath

String

设置按钮背景图片路径。

privacyAlertBtnBackgroundImgDrawable

Drawable

设置确认按钮背景图片对象。

privacyAlertBtnTextColor

int

设置确认按钮文字颜色。

privacyAlertBtnTextColorPath

String

设置确认按钮文字颜色路径。

privacyAlertBtnTextSize

int

设置确认按钮文字大小,默认值18 sp。

privacyAlertBtnWidth

int

设置确认按钮宽度。(单位:dp)

privacyAlertBtnHeigth

int

设置确认按钮高度。(单位:dp)

privacyAlertCloseBtnShow

boolean

设置右上角的关闭按钮。

  • true(默认值):显示关闭按钮。

  • false:不显示关闭按钮。

privacyAlertCloseImagPath

String

设置关闭按钮图片路径。

privacyAlertCloseScaleType

ImageView.ScaleType

设置关闭按钮缩放类型。

privacyAlertCloseImagDrawable

Drawable

设置关闭按钮图片。

privacyAlertCloseImgWidth

int

设置关闭按钮宽度。(单位:dp)

privacyAlertCloseImgHeight

int

设置关闭按钮高度。(单位:dp)

privacyAlertBtnGrivaty

int[]

设置确认按钮布局方式。

privacyAlertBtnContent

int

设置确认按钮文本。

privacyAlertBtnHorizontalMargin

int

设置确认按钮的横向边距。

privacyAlertBtnVerticalMargin

int

设置确认按钮的纵向边距。

tapPrivacyAlertMaskCloseAlert

boolean

设置二次隐私协议弹窗点击背景蒙层是否关闭弹窗。

  • true(默认值):表示关闭。

  • false:表示不关闭。

usePrivacyAlertTitleFontAndPath

boolean,String

设置二次弹窗title文本是否使用自定义字体。自定义字体名称,包含字体格式,如xxx.ttf,文件需放置在assets下。

  • true:使用自定义字体。

  • false:不使用自定义字体。

setPrivacyAlertTitleTypeface

Typeface

设置二次弹窗title文本使用系统字体。

参数包含:Typeface.SANS_SERIF、Typeface.SERIF、Typeface.MONOSPACE。

usePrivacyAlertContentFontAndPath

boolean,String

设置二次弹窗协议文本是否使用自定义字体。自定义字体名称,包含字体格式,如xxx.ttf,文件需放置在assets下。

  • true:使用自定义字体。

  • false:不使用自定义字体。

setPrivacyAlertContentTypeface

Typeface

设置二次弹窗协议文本使用系统字体。

参数包含:Typeface.SANS_SERIF、Typeface.SERIF、Typeface.MONOSPACE。

usePrivacyAlertBtnFontAndPath

boolean,String

设置二次弹窗确认按钮文本是否使用自定义字体。自定义字体名称,包含字体格式,如xxx.ttf,文件需放置在assets下。

  • true:使用自定义字体。

  • false:不使用自定义字体。

setPrivacyAlertBtnTypeface

Typeface

设置二次弹窗确认按钮文本使用系统字体。

参数包含:Typeface.SANS_SERIF、Typeface.SERIF、Typeface.MONOSPACE。

setPrivacyAlertBefore

String

二次弹窗协议前缀。

setPrivacyAlertEnd

String

二次弹窗协议后缀。

setPrivacyAlertOneColor

int

设置授权页协议1文本颜色。

setPrivacyAlertTwoColor

int

设置授权页协议2文本颜色。

setPrivacyAlertThreeColor

int

设置授权页协议3文本颜色。

setPrivacyAlertOperatorColor

int

设置授权页运营商协议文本颜色。

6. 常见问题

1.首次取号时,为什么APP网络通信正常,手机号认证一直失败?

  • 首先检测sim卡有没有欠费,能不能通过移动网络上网。

  • Android中国某些厂商的系统,wifi 网络权限与移动网络权限是分开管理的,检测APP是否只有WLAN 网络权限,而移动蜂窝网络权限缺失。

2.checkEnvAvailable函数返回false?

  • 检测是否有插入sim

  • 检测蜂窝网络开关是否开启

3. 获取token失败,一般有哪些原因?

  • 手机设置检测网络制式,中国移动支持2G/3G/4G、中国联通支持3G/4G、中国电信支持4G,但各大运营商网络在4G网络成功率较高

  • 接口超时时间是否过短,建议3000~5000ms

  • SIM能否欠费,是否可以蜂窝网络上网。

  • 切换卡的过程中,需要等网络稳定后,再使用认证登录功能。

4.Android双卡手机本机号码登录过程中,本机号码登录逻辑是怎么样的?

  • 使用默认上网卡进行一键登录认证。

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

  • ⼿机⽹络是否连接了代理。

  • ⼿机是否处于hook状态,或者安装了相关的hook框架。

  • APP是否处于attached状态。

  • ⼿机是否被root。

  • 是否在模拟器环境中运⾏。

  • APP是否处于调试状态,使⽤ getReporter.setLoggerEnable(true) 可以关闭此项检测。

6.权限问题

若出现权限相关问题,请检查 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" />

7. 非法手机号码

部分试点纯流量卡,未实名的手机号码会返回非法手机号码的情况。

8. VPN报错

用户开启VPN后使用SDK进行本机号码登录的时候,联通号码会出现源IP错误,电信号码会出现800008错误,移动号码会出现103111错误。请关闭VPN或者打开飞行模式再关闭后进行重试。

9. 页面非法修改

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

10. 当使用移动卡请求本机号码登录不成功,出现以下报错信息时:

ontokenfaild{"code":"600011","msg":"vendorCode:200025, msg:获得的手机授权码失败:{\"resultCode\":\"200025\",\"authType\":\"1\",\"authTypeDes\":\"WIFI下网关鉴权\",\"resultDesc\":\"发生未知错误\"}","requestCode":0,"vendorName":"CMCC"}请检查依赖v4com.android.support:support-v4版本是否高于25.4.0或者v7com.android.support:appcompat-v7版本是否高于25.4.0。

11. 当使用移动卡请求本机号码登录不成功,出现以下报错信息时

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">cmpassport.com</domain>
    </domain-config>
</network-security-config>