本文为您介绍了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();
文档内容是否对您有帮助?