Android客户端接入

本文为您介绍了Android客户端如何接入通信授权服务功能。

接入步骤

下载SDK

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

导入项目

将后缀为aar的文件复制至工程的libs目录下。

添加配置

在App工程AndroidManifest.xml增加Activity声明。

<activity 
    android:name="com.nirvana.communicationauth.AuthorizationActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
    android:exported="false" 
    android:launchMode="singleTop" 
    android:theme="@style/TransparentTheme" 
    android:windowSoftInputMode="adjustPan" 
/>
<activity 
    android:name="com.nirvana.communicationauth.ui.AuthWebViewActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
    android:exported="false" 
    android:launchMode="singleTop" 
    android:theme="@style/TransparentTheme" 
/>

功能示例

  • 获取认证实例

    /*
      显示在授权页底部的自定义协议
      key是协议名,value是对应协议的URL
      不可为空
     */
    HashMap<String, String> pMap = new HashMap<>();
    pMap.put("《自定义隐私协议》", "https://www.taobao.com");
    pMap.put("《阿里云》", "https://www.aliyun.com/");
    
    CASResultListener pInitListener = new CASResultListener() {
        @Override
        public void onSuccess(@NonNull CASResult cassResult) {
            Log.e(TAG, cassResult.toString());
        }
    
        @Override
        public void onFailed(@NonNull CASResult cassResult) {
            Log.e(TAG, cassResult.toString());
        }
    };
    /*
        如果必要参数为空或者格式错误,build返回null
        对应错误信息从Listener抛出
     */
    CASHelper helper = new CASBuilder
        //控制台获取的密钥
        .appKey(APP_KEY)
        //需要通信授权的手机号
        .phoneNumber("132xxxxxxxx")
        //控制台配置的授权场景ID分为合约型和商业型
        .schemeId(SCHEME_ID)
        .protocolMap(pMap)
        .context(getApplicationContext())
        .build(pInitListener);
  • 开放实例接口

    public interface CASHelper {
    
    
        /**
         * 提前获取SDK授权页相关授权信息(对应方案ID)以及当前手机号的授权状态,起到加速授权页拉起的作用
         * 如果不调用此接口在调startAuthPage接口唤起授权页的时候同样会去获取
         * @param timeout接口超时时间(单位:毫秒)
         * @param listener事件回调
         */
        void accelerateAuthInBackground(int timeout, @NonNull CASResultListener listener);
        
        /**
         * 唤起授权页
         * @param timeout接口超时时间(单位:毫秒)
         * @param uiConfig授权页UI配置项
         * @param listener授权事件回调
         * @param uiClickListener UI点击回调
         */
        void startAuthPage(int timeout, AuthUiConfig uiConfig, @NonNull CASResultListener listener, UiClickListener uiClickListener);
    
        /**
         * 关闭授权页接口
         * 点击授权页上的关闭按钮会直接关闭授权页
         * 授权成功或失败不会主动关闭授权页,需要主动调用此接口关闭授权页
         * @param traceId流水号对应的是唤起授权页成功返回的traceId
         */
        void quitAuthorizationPage(String traceId);
    
        /**
         * 开启SDK内部日志打印
         * @param enable是否打印
         */
        void setLoggerEnable(boolean enable);
    
    }
  • 事件回调CASResultListener

    public interface CASResultListener {
    
        /**
         * 成功回调
         * @param cassResult返回成功结果
         */
        void onSuccess(@NonNull CASResult cassResult);
    
        /**
         * 失败回调
         * @param cassResult返回失败原因
         */
        void onFailed(@NonNull CASResult cassResult);
    }
    
    public class CASResult {
        /**
         * 对应事件code ResultCode中定义
         */
        private String code;
        /**
         * 对应事件msg ResultCode中定义
         */
        private String msg;
        /**
         * 流水号,每次调用接口生成
         */
        private String traceId;
        /**
         * 手机号授权状态
         * accelerateAuthInBackground和startAuthPage接口成功时返回
         */
        private String authStatus;
        /**
         * SDK异常或服务端请求错误详细信息
         */
        private Map<String, String> innerFailedResultData;
    }
  • 单击授权页UI回调

    public interface UiClickListener {
        /**
         * 回抛授权页控件点击事件,目前只有授权按钮和关闭授权页按钮有点击事件回抛
         * @param code UI点击事件code
         *             授权按钮点击code ResultCode.CODE_CLICK_AUTH_BTN
         *             授权页关闭按钮点击code ResultCode.CODE_CLICK_BACK_BTN
         * @param jsonData点击事件返回的具体内容不同,code对应不同内容可能为空
         *                 授权按钮点击{"isChecked":false,"verifyCode":""}isCheck对应协议是否勾选,verifyCode对应输入的验证码
         */
        void onClick(@NonNull String code, String jsonData);
    }
  • 授权页UI配置AuthUiConfig

    AuthUiConfig pAuthUiConfig =  new AuthUiConfig.Builder()
                    //授权按钮文字大小
                    .setAuthBtnTextSize(15)
                    //授权按钮文字颜色
                    .setAuthBtnTextColor(Color.BLACK)
                    //授权按钮文字样式
                    .setAuthBtnTextTypeface(Typeface.DEFAULT_BOLD, Typeface.NORMAL)
                    //以此类推
                    //底部文案文字大小、颜色、样式
                    .setSloganXXX()
                    //号码栏文字大小、颜色、样式
                    .setNumberXXX()
                    //顶部导航栏文字大小、颜色、样式
                    .setNavXXX()
                    //协议栏文字大小、颜色、样式
                    .setPrivacyXXX()
                    //弹窗蒙层颜色
                    .setDialogMaskColor()
                    //是否开启弹窗模式
                    .setDialogMode(true)
                    //默认loading隐藏
                    .setLoadingHidden()
                    //默认toast隐藏
                    .setAuthBtnToastHidden()
                    .create();