Android客户端接入
本文为您介绍Android客户端融合认证的集成方法及接口的功能示例。
接入步骤
下载SDK
登录号码认证产品控制台,在概览页面或号码认证服务 > 了解融合认证页面的右侧API&SDK区域,单击立即下载,进入API&SDK页面,根据页面提示下载并解压对应SDK。
创建认证方案
您导入项目或调用API接口时,会用到方案Code等参数信息,请先在号码认证产品控制台,创建认证方案,获取方案Code等参数信息。
导入项目
控制minSdkVersion。
说明融合认证SDK最低依赖版本为21,因此创建新项目minSdkVersion不能低于21。
导入aar产物并添加依赖。
在使用融合认证功能的module中引入相关SDK,即将相关aar导入
module libs
文件夹。如您的项目需要使用手机号风险分、端风险设置功能,请将友盟相关组件一起引入。
如您的项目不需要使用手机号风险分、端风险设置功能,请引入融合认证aar即可。
在module下
build.gradle
文件中找到dependencies,添加如下引用:implementation fileTree(dir: "libs", include: ["*.aar"]) implementation 'androidx.appcompat:appcompat:1.3.1'
创建签名文件。
参考studio创建签名文件创建签名文件,此签名文件在创建方案号时使用,签名文件放置在module下,文件名及文件路径无设置要求。
以Demo为例,将签名文件放置在
app/sig-adaptation/debug/
文件夹下,在module的build.gradle
文件中指向该签名。查看签名。
使用Studio右侧面板,选择Gradle > 项目名称 > 签名文件module > Tasks > android > signingReport,查看签名。
说明包签名获取方式如下:
方式一:上图的下方输出的MD5值移除冒号,将大写字母转换为小写字母即可生成包签名。
方式二:请通过手机终端下载并安装Android App签名获取工具,获取Android App的包签名信息。
添加配置
添加权限。
在
AndroidMainfest.xml
清单文件中添加必要权限。<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
添加Activity声明。
在
AndroidMainfest.xml
清单文件中添加Activity声明。//号码认证界面 <activity android:name="com.alicom.fusion.auth.numberauth.FusionNumberAuthActivity" android:theme="@style/NumberAuthTheme" android:launchMode="singleTask" android:screenOrientation="portrait"> <intent-filter> //action值固定不能修改 <action android:name="fusion_action_auth"/> <category android:name="fusion_category_auth"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> //短信界面 <activity android:name="com.alicom.fusion.auth.smsauth.FusionSmsActivity" android:screenOrientation="portrait"> <intent-filter> //action值固定不能修改 <action android:name="fusion_action_sms"/> <category android:name="fusion_category_sms"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> //上行短信界面 <activity android:name="com.alicom.fusion.auth.upsms.AlicomFusionUpSmsActivity" android:screenOrientation="portrait"> <intent-filter> //action值固定不能修改 <action android:name="fusion_action_ups"/> <category android:name="fusion_category_ups"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> //号码认证授权页界面 <activity android:name="com.mobile.auth.gatewayauth.LoginAuthActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:exported="false" android:launchMode="singleTop" android:screenOrientation="behind" 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"/> //号码认证协议及登录注册场景协议界面用户可自定义 <activity android:name="com.alicom.fusion.demo.CustomWebViewActivity" android:configChanges="orientation|keyboardHidden|screenSize|uiMode|fontScale" android:screenOrientation="sensorPortrait"> <intent-filter> //action为固定值不能修改 <action android:name="com.fusion.auth"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
混淆配置。
如接入方有混淆需求,请在混淆文件中加入如下混淆规则:
-keep class com.alicom.fusion.auth.**{*;}
鉴权
SDK在启动时需要接入方传入鉴权Token,用于合法性校验。
Token鉴权成功,通过
onSDKTokenAuthSuccess():
回调。Token鉴权失败,通过
onSDKTokenAuthFailure(AlicomFusionAuthToken token, AlicomFusionEvent alicomFusionEvent)
回调。
更新
SDK在运行时若Token过期,请通过onSDKTokenUpdate()
更新Token。
使用场景
/* 默认登录注册场景 */
public static final String ALICOMFUSIONAUTHTEMPLATED_10001 = "100001";
/* 默认更换手机号场景 */
public static final String ALICOMFUSIONAUTHTEMPLATED_10002 = "100002";
/* 默认重置密码场景 */
public static final String ALICOMFUSIONAUTHTEMPLATED_10003 = "100003";
/* 默认绑定新手机号场景 */
public static final String ALICOMFUSIONAUTHTEMPLATED_10004 = "100004";
/* 默认验证绑定手机号场景 */
public static final String ALICOMFUSIONAUTHTEMPLATED_10005 = "100005";
类别 | 说明 | |
开始场景 | 调用 说明 调用该接口的前提是没有正在执行的场景。 |
|
继续场景 | 调用 说明 调用该接口的前提是有正在执行的场景。 |
|
结束场景 | 调用 | templateId:场景唯一标识与控制台场景ID唯一对应,用于决策启动哪个场景。 |
获取Token成功 | SDK执行到一个节点后或通过 | |
中途获取Token成功 | 中途获取Token成功的回调,在AlicomFusionTemplateId_100002场景下验证当前手机号节点触发,回调 在接入方验证完成当前手机号后,通过verifyResult告知SDK验证结果,SDK将根据该结构执行之后的流程。 | |
获取Token失败 | 如果SDK在某个节点获取Token失败,通过 | |
场景结束 | 回调 接入方调用 |
交互流程详解
完整的功能交互流程请参见融合认证的交互流程。
SDK方法说明
创建融合认证实例
//创建无参数构造方法,主要进行⼀些SDK初始化⼯作
AlicomFusionBusiness mAlicomFusionBusiness=new AlicomFusionBusiness();
初始化传入鉴权Token
/**
* 初始化,传入鉴权Token
* @param mContext
* @param sceneCode方案号
* @param token鉴权Token
*/
public void initWithToken(Context mContext, String sceneCode, AlicomFusionAuthToken token)
Token需要从服务端获取。
Token鉴权成功,通过
onSDKTokenAuthSuccess
回调,场景操作必须在回调成功后进行;Token鉴权失败,通过onSDKTokenAuthFailure
回调。Token过期前五分钟,通过
onSDKTokenUpdate
回调获取新的Token,⽤户必须实现此回调获取新的Token。
使用示例
AlicomFusionAuthToken token=new AlicomFusionAuthToken();
token.setAuthToken(GlobalInfoManager.getInstance().getToken());
mAlicomFusionBusiness.initWithToken(GlobalInfoManager.getInstance().getContext(), Constant.SCHEME_CODE,token);
开始场景
使用默认UI
该接口使用的是默认UI,接入方无法修改UI。
需要Token鉴权成功后才可使用。
没有其他场景正在执行方可调用,否则将报100003错误。
templateId请参考使用场景。
/**
* 开始拉起场景,使用融合认证内置UI
* @param mContext
* @param templateId 场景唯⼀标识与控制台场景ID唯⼀对应
*/
public void startSceneWithTemplateId(Context mContext,String templateId)
使用示例
mAlicomFusionBusiness.startSceneWithTemplateId(getActivity(), "100001");
使用自定义UI
根据实际场景可以通过UI回调接口修改相关UI。
一键登录
onPhoneNumberVerifyUICustomView(String templateId,String nodeId, FusionNumberAuthModel authConfig)
短信验证码
(String templateId,String nodeId,boolean isAutoInput, AlicomFusionVerifyCodeView view)
用户主动发短信
onSMSSendVerifyUICustomView(String templateId,String nodeId, AlicomFusionUpSMSView view,String receivePhoneNumber,String verifyCode)
需要Token鉴权后才可使用。
templateId请参考使用场景。
/**
* 开始拉起场景,使用APP自定义UI
* @param mContext
* @param templateId 场景唯一标识 与控制台场景ID唯一对应
* @param callback UI回调,自定义UI需通过该回调实现
*/
public void startSceneWithTemplateId(Context mContext,String templateId,AlicomFusionAuthUICallBack callback)
使用示例
mAlicomFusionBusiness.startSceneWithTemplateId(getContext(), "100001", new AlicomFusionAuthUICallBack() {
@Override
public void onPhoneNumberVerifyUICustomView(String templateId,String nodeId, FusionNumberAuthModel authConfig) {
}
@Override
public void onSMSCodeVerifyUICustomView(String templateId,String nodeId,boolean isAutoInput, AlicomFusionVerifyCodeView view) {
}
@Override
public void onSMSSendVerifyUICustomView(String templateId,String nodeId, AlicomFusionUpSMSView view,String receivePhoneNumber,String verifyCode) {
}
});
继续场景
用于场景中断后恢复流程,如获取到号码校验Token后,假设服务端效验失败,可以通过该接口继续进行场景流程。
isSuccess的作用在于当前的认证是否成功,决定SDK的认证走向,如SDK透出Token后,进行取号操作失败,如需下一步鉴权,可通过该参数控制走向。
需要在start后才能使用。
templateId请参考使用场景。
/**
* 继续场景
* @note 该接口用于场景中断后恢复流程,如获取到码号效验Token后,假设服务端效验失败,可以通过该接⼝继续进行场景流程
* @param templateId 场景唯⼀标识与控制台场景ID唯⼀对应
* @param isSuccess 当前场景验证是否成功,成功与否决定继续场景后的业务流程走向
*/
public void continueSceneWithTemplateId(String templateId,boolean isSuccess)
使用示例
mAlicomFusionBusiness.continueSceneWithTemplateId("100001",true);
结束场景
当需要结束场景时调用该接口,对应的场景将不再执行。
需要在start后才能使用。
templateId请参考使用场景。
/**
* 结束场景
* @note 与start接口对应,结束后才可以start下⼀次场景,不可同时start多个场景
* @param templateId 场景唯⼀标识与控制台场景ID唯⼀对应
*/
public void stopSceneWithTemplateId(String templateId)
使用示例
mAlicomFusionBusiness.stopSceneWithTemplateId("100001");
一键登录界面添加自定义view
/**
* 添加自定义布局
*
* @param xmlConfig
*/
@AuthNumber
public void addAuthRegisterXmlConfig(AuthRegisterXmlConfig xmlConfig)
/**
* 动态添加控件
*
* @param viewID view的ID
* @param viewConfig view的动态配置
*/
public void addAuthRegistViewConfig(String viewID, AuthRegisterViewConfig viewConfig)
使用示例
fusionNumberAuthModel.addAuthRegistViewConfig(""/**view ID**/,new AuthRegisterViewConfig.Builder()
//添加自定义view
.setView(null)
//.setView(initNumberTextView())
//RootViewId有三个参数
//AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY 导航栏以下部分为body
//AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_TITLE_BAR 导航栏部分 设置导航栏部分记得setNavHidden和setNavReturnHidden显示后才可看到效果
//AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_NUMBER 手机号码部分
.setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
.setCustomInterface(new CustomInterface() {
@Override
public void onClick(Context context) {
//自定义view点击事件
}
}).build());
fusionNumberAuthModel.addAuthRegisterXmlConfig(new AuthRegisterXmlConfig.Builder()
.setLayout(0/**xml布局layout ID**/,new AbstractPnsViewDelegate(){
@Override
public void onViewCreated(View view) {
//添加自定义布局相关逻辑,如点击事件等
}
});
二次弹窗界面添加自定义view
/**
* 二次弹窗动态添加控件
*
* @param viewID view的ID
* @param viewConfig view的动态配置
*/
public void addPrivacyAuthRegistViewConfig(String viewID, AuthRegisterViewConfig viewConfig)
使用示例
fusionNumberAuthModel.addPrivacyAuthRegistViewConfig(""/**view ID**/, new AuthRegisterViewConfig.Builder()
//添加自定义view
.setView(null)
//RootViewId有三个参数
//AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY 协议文本区域
//AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_TITLE_BAR 顶部导航栏部分
//AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_NUMBER 按钮区域
.setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_NUMBER)
.setCustomInterface(new CustomInterface() {
@Override
public void onClick(Context context) {
//自定义view点击事件
}
}).build());
添加二次弹窗自定义布局view
/**
* 二次弹窗添加自定义布局
*
* @param xmlConfig
*/
public void addPrivacyRegisterXmlConfig(AuthRegisterXmlConfig xmlConfig)
使用示例
fusionNumberAuthModel.addPrivacyRegisterXmlConfig(new AuthRegisterXmlConfig.Builder()
.setLayout(0/**xml布局layout ID**/,new AbstractPnsViewDelegate(){
@Override
public void onViewCreated(View view) {
//添加自定义布局相关逻辑,如点击事件等
}
其他接口说明
友盟组件依赖设置
用户如果需要使用友盟组件的端风险检测及手机号评分功能,需要配置aar后调用下面的方法决定友盟组件的初始化位置。
如果用户只是简单地调用此方法而不引入aar则设置无效,因为此功能属于插件式依赖,不属于强制性依赖。
/**
* 设置是否由SDK初始化友盟统计组件
* @note SDK默认使用融合认证关联友盟组件,如果您当前App未集成友盟组件,根据SDK集成文档接入各个SDK后,无需再关心此接口设置
* @note 如果您当前已经集成过友盟组件,则⽆需重复集成,使用此接口关闭内置链接,并确保使用本SDK前已经完成友盟组件初始化
* @param isUseSupply true:使用SDK默认关联友盟组件;false:不使用SDK关联友盟组件,即使用App原有友盟组件,默认true
* @param channel 渠道名称
*/
public static void useSDKSupplyUMSDK(boolean isUseSupply,String channel
)
使用示例
AlicomFusionBusiness.useSDKSupplyUMSDK(true,"fusionauth");
销毁服务
销毁服务后需要重新创建对象。
/**
* 销毁服务
* @note 销毁服务后,SDK内部各个模块同步销毁,若想继续使用SDK,请重新初始化
*/
public void destory()
使用示例
mAlicomFusionBusiness.destory();
主动更新Token
此方法为用户主动更新Token,Token相关鉴权及更新逻辑参考initWithToken中的Token逻辑。
/**
* 主动更新鉴权Token
* @param token 鉴权Token
* @note 鉴权Token具有时效性,App可再Token即将过期时,主动向SDK更新Token
* @note 非必要接口:SDK内部存在token的过期监控,过期前会通过AlicomFusionAuthCallVack回调通知App,App可不感知此项逻辑
*/
public void updateToken(AlicomFusionAuthToken token)
使用示例
AlicomFusionAuthToken token=new AlicomFusionAuthToken();
token.setAuthToken(GlobalInfoManager.getInstance().getToken());
mAlicomFusionBusiness.updateToken(token);
获取版本号
/**
* 获取SDK版本号
* @return 版本号
*/
public static String getSDKVersion()
使用示例
String version=AlicomFusionBusiness.getSDKVersion();
获取场景ID
/**
* 获取当前正在运行中的场景ID
* @return templateId 场景唯⼀标识与控制台场景ID唯⼀对应
*/
public String getCurrentTemplateId()
使用示例
String currentTemplateId=mAlicomFusionBusiness.getCurrentTemplateId();
日志功能
/** AlicomFusionLog 日志会在debug状况下或者设置logEnable为true的情况下打印
* 获取当前正在运行中的场景ID
* @return templateId 场景唯⼀标识与控制台场景ID唯⼀对应
*/
public static void setLogEnable(boolean logEnable)
使用示例
AlicomFusionLog.setLogEnable(true);
⼀键登录自定义UI参数
public class FusionNumberAuthModel {
//实现其他号码登录功能
public void otherPhoneLogin()
/**
* 添加自定义View
*
* @param xmlConfig
*/
@AuthNumber
public void addAuthRegisterXmlConfig(AuthRegisterXmlConfig xmlConfig)
/**
* 动态添加控件
*
* @param viewID view的ID
* @param viewConfig view的动态配置
*/
public void addAuthRegistViewConfig(String viewID, AuthRegisterViewConfig viewConfig)
//移除自定义添加控件
public void removeAuthRegisterXmlConfig()
//移除自定义View
public void removeAuthRegisterViewConfig()
/**
* 设置UI控件点击事件回调
*
* @param uiClickListener 回调实现
*/
public void setUiClickListener(AuthUIControlClickListener uiClickListener)
/**
* 设置切换组件swtich点击事件
*
* @param callBack 回调实现
*/
public void setSwitchLoginBack(AlicomFusionSwitchLogin callBack)
//获取参数实体对象
public Builder getBuilder()
@AuthNumber
public static class Builder {
/**
* 设置蒙层透明度
*
* @param dialogAlpha
* @return
*/
public FusionNumberAuthModel.Builder setDialogAlpha(float dialogAlpha)
/**
* 设置顶部导航栏背景色
*
* @param navColor
* @return
*/
public FusionNumberAuthModel.Builder setNavColor(@ColorInt int navColor)
/**
* 设置一键登录loading背景
* @param loadingBackgroundPath
* @return
*/
public FusionNumberAuthModel.Builder setLoadingBackgroundPath(String loadingBackgroundPath)
/**
* 设置一键登录loading背景
* @param loadingBackgroundDrawable
* @return
*/
public FusionNumberAuthModel.Builder setLoadingBackgroundDrawable(Drawable loadingBackgroundDrawable)
/**
* 设置顶部导航栏标题内容
*
* @param navText
* @return
*/
public FusionNumberAuthModel.Builder setNavText(String navText)
/**
* 设置顶部导航栏标题颜色
*
* @param navTextColor
* @return
*/
public FusionNumberAuthModel.Builder setNavTextColor(@ColorInt int navTextColor)
/**
* 运营商协议指定显示顺序,默认0,即第1个协议显示,最大值可为3,即第4个协议显示
*
* @param privacyOperatorIndex
* @return
*/
public FusionNumberAuthModel.Builder setPrivacyOperatorIndex(@IntRange(from = 0, to = 3) int privacyOperatorIndex)
/**
* 协议名称之间连接字符串数组,默认 ["和","、","、"] ,即第一个为"和",其他为"、",按顺序读取,为空则取默认
*
* @param privacyConectTexts
* @return
*/
public FusionNumberAuthModel.Builder setPrivacyConectTexts(String[] privacyConectTexts)
/**
* 设置顶部导航栏返回按钮的图片缩放类型
*
* @param navReturnScaleType
* @return
*/
public FusionNumberAuthModel.Builder setNavReturnScaleType(ImageView.ScaleType navReturnScaleType)
/**
* 设置Logo图片路径,目前只支持drawable资源文件
*
* @param LogoImgPath drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/Logo.png,则传入参数为
* "Logo",即setLogoImgPath("Logo")。
* @return
*/
public FusionNumberAuthModel.Builder setLogoImgPath(String LogoImgPath)
/**
* 设置Logo是否隐藏
*
* @param LogoHidden
* @return
*/
public FusionNumberAuthModel.Builder setLogoHidden(boolean LogoHidden)
/**
* 设置手机号掩码颜色
*
* @param numberColor
* @return
*/
public FusionNumberAuthModel.Builder setNumberColor(@ColorInt int numberColor)
/**
* 设置手机号字体大小
*
* @param numberSize 单位 sp
* @return
*/
@Deprecated
public FusionNumberAuthModel.Builder setNumberSize(int numberSize)
/**
* 设置手机号字体大小
*
* @param numberSize 单位 dp
* @return
*/
public FusionNumberAuthModel.Builder setNumberSizeDp(int numberSize)
/**
* 设置"切换登录方式"控件是否隐藏
*
* @param switchAccHidden
* @return
*/
public FusionNumberAuthModel.Builder setSwitchAccHidden(boolean switchAccHidden)
/**
* 设置"切换登录方式"控件字体颜色
*
* @param switchAccTextColor
* @return
*/
public FusionNumberAuthModel.Builder setSwitchAccTextColor(@ColorInt int switchAccTextColor)
/**
* 设置登录按钮文本内容
*
* @param logBtnText
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnText(String logBtnText)
/**
* 设置登录按钮文字颜色
*
* @param logBtnTextColor
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnTextColor(@ColorInt int logBtnTextColor)
/**
* 设置登录按钮字体大小
*
* @param logBtnTextSize 单位 sp
* @return
*/
@Deprecated
public FusionNumberAuthModel.Builder setLogBtnTextSize(int logBtnTextSize)
/**
* 设置登录按钮字体大小
*
* @param logBtnTextSize 单位 dp
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnTextSizeDp(int logBtnTextSize)
/**
* 自定义第一个隐私协议,最多允许添加2个自定义隐私协议
*
* @param name 协议名称
* @param url 协议页面的URL
* @return
*/
public FusionNumberAuthModel.Builder setAppPrivacyOne(String name, String url)
/**
* 自定义第一个隐私协议,最多允许添加2个自定义隐私协议
*
* @param name 协议名称
* @param url 协议页面的URL
* @return
*/
public FusionNumberAuthModel.Builder setAppPrivacyTwo(String name, String url)
/**
* 自定义第3个隐私协议,最多允许添加2个自定义隐私协议
*
* @param name 协议名称
* @param url 协议页面的URL
* @return
*/
public FusionNumberAuthModel.Builder setAppPrivacyThree(String name, String url)
/**
* 自定义隐私协议文字颜色,运营商协议以及自定义协议都会使用该颜色。
*
* @param baseColor 隐私内容非协议名称部分的文字颜色
* @param protocolColor 隐私内容协议名称部分的文字颜色
* @return
*/
public FusionNumberAuthModel.Builder setAppPrivacyColor(@ColorInt int baseColor, @ColorInt int protocolColor)
/**
* 设置slogan文字颜色
*
* @param sloganTextColor
* @return
*/
public FusionNumberAuthModel.Builder setSloganTextColor(@ColorInt int sloganTextColor)
/**
* 设置登录按钮背景图片路径
*
* @param logBtnBackgroundPath drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/logBtn.png,则传入参数为
* "logBtn",即setLogBtnBackgroundPath("logBtn")。
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnBackgroundPath(String logBtnBackgroundPath)
/**
* 设置导航栏返回按钮图片路径
*
* @param navReturnImgPath drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/return.png,则传入参数为
* "return",即setNavReturnImgPath("return")。
* @return
*/
public FusionNumberAuthModel.Builder setNavReturnImgPath(String navReturnImgPath)
/**
* 设置slogan距离顶部导航栏的距离,如果设置了该属性,则{@link #setSloganOffsetY_B(int)}将无效
*
* @param sloganOffsetY 单位dp
* @return
* @see #setSloganOffsetY_B(int)
*/
public FusionNumberAuthModel.Builder setSloganOffsetY(int sloganOffsetY)
/**
* 设置Logo距离顶部导航栏的距离,如果设置了该属性,则{@link #setLogoOffsetY_B(int)}将无效
*
* @param LogoOffsetY 单位dp
* @return
* @see #setLogoOffsetY_B(int)
*/
public FusionNumberAuthModel.Builder setLogoOffsetY(int LogoOffsetY)
/**
* 设置Logo距离父view底部的距离
*
* @param LogoOffsetY_B 单位dp
* @return
* @see #setLogoOffsetY(int)
*/
public FusionNumberAuthModel.Builder setLogoOffsetY_B(int LogoOffsetY_B)
/**
* 设置手机号掩码距离顶部导航栏的距离,如果设置了该属性,则{@link #setNumFieldOffsetY_B(int)}将无效
*
* @param numFieldOffsetY 单位dp
* @return
* @see {@link #setNumFieldOffsetY_B(int)}
*/
public FusionNumberAuthModel.Builder setNumFieldOffsetY(int numFieldOffsetY)
/**
* 设置手机号掩码距离父view底部的距离
*
* @param numFieldOffsetY_B 单位dp
* @return
* @see #setNumFieldOffsetY(int)
*/
public FusionNumberAuthModel.Builder setNumFieldOffsetY_B(int numFieldOffsetY_B)
/**
* 设置切换登录方式控件距离顶部导航栏的距离,如果设置了该属性,则{@link #setSwitchOffsetY_B(int)}将无效
*
* @param switchOffsetY 单位dp
* @return
* @see #setSwitchOffsetY_B(int)
*/
public FusionNumberAuthModel.Builder setSwitchOffsetY(int switchOffsetY)
/**
* 设置切换登录方式控件距离父view底部的距离
*
* @param switchOffsetY_B 单位dp
* @return
* @see #setSwitchOffsetY(int)
*/
public FusionNumberAuthModel.Builder setSwitchOffsetY_B(int switchOffsetY_B)
/**
* 设置登录按钮距离顶部导航栏的距离,如果设置了该属性,则{@link #setLogBtnOffsetY_B(int)}将无效
*
* @param logBtnOffsetY 单位dp
* @return
* @see #setLogBtnOffsetY_B(int)
*/
public FusionNumberAuthModel.Builder setLogBtnOffsetY(int logBtnOffsetY)
/**
* 设置登录按钮距离父view底部的距离
*
* @param logBtnOffsetY_B 单位dp
* @return
* @see #setLogBtnOffsetY(int)
*/
public FusionNumberAuthModel.Builder setLogBtnOffsetY_B(int logBtnOffsetY_B)
/**
* 设置隐私协议距离顶部导航栏的距离,如果设置了该属性,则{@link #setPrivacyOffsetY_B(int)}将无效
*
* @param privacyOffsetY 单位dp
* @return
* @see #setPrivacyOffsetY_B(int)
*/
public FusionNumberAuthModel.Builder setPrivacyOffsetY(int privacyOffsetY)
/**
* 设置隐私协议距离父view底部的距离
*
* @param privacyOffsetY_B 单位dp
* @return
* @see #setPrivacyOffsetY(int)
*/
public FusionNumberAuthModel.Builder setPrivacyOffsetY_B(int privacyOffsetY_B)
/**
* 设置slogan距离父view底部的距离
*
* @param sloganOffsetY_B 单位dp
* @return
* @see #setSloganOffsetY(int)
*/
public FusionNumberAuthModel.Builder setSloganOffsetY_B(int sloganOffsetY_B)
/**
* 设置slogan文本内容
*
* @param sloganText
* @return
*/
public FusionNumberAuthModel.Builder setSloganText(String sloganText)
/**
* 设置隐私协议的勾选按钮是否隐藏
*
* @param checkboxHidden
* @return
*/
public FusionNumberAuthModel.Builder setCheckboxHidden(boolean checkboxHidden)
/**
* 设置顶部导航栏文字大小
*
* @param navTextSize 单位 sp
* @return
*/
@Deprecated
public FusionNumberAuthModel.Builder setNavTextSize(int navTextSize)
/**
* 设置顶部导航栏文字大小
*
* @param navTextSize 单位 dp
* @return
*/
public FusionNumberAuthModel.Builder setNavTextSizeDp(int navTextSize)
/**
* 设置Logo控件的宽
*
* @param LogoWidth 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setLogoWidth(int LogoWidth)
/**
* 设置Logo控件的高
*
* @param LogoHeight 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setLogoHeight(int LogoHeight)
/**
* 设置切换登录方式控件的文字大小
*
* @param switchAccTextSize 单位 sp
* @return
*/
@Deprecated
public FusionNumberAuthModel.Builder setSwitchAccTextSize
/**
* 设置切换登录方式控件的文字大小
*
* @param switchAccTextSize 单位 dp
* @return
*/
public FusionNumberAuthModel.Builder setSwitchAccTextSizeDp(int switchAccTextSize)
/**
* 设置切换登录方式控件的文本内容
*
* @param switchAccText
* @return
*/
public FusionNumberAuthModel.Builder setSwitchAccText(String switchAccText)
/**
* 设置slogan文字大小
*
* @param sloganTextSize 单位 dp
* @return
*/
public FusionNumberAuthModel.Builder setSloganTextSizeDp(int sloganTextSize)
/**
* 设置slogan是否隐藏
*
* @param sloganHidden
* @return
*/
public FusionNumberAuthModel.Builder setSloganHidden(boolean sloganHidden)
/**
* 设置隐私协议勾选框未勾选状态时显示时图片的路径
*
* @param uncheckedImgPath drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/unchecked.png,则传入参数为
* "unchecked",即setUncheckedImgPath("unchecked")。
* @return
*/
public FusionNumberAuthModel.Builder setUncheckedImgPath(String uncheckedImgPath) {
this.uncheckedImgPath = uncheckedImgPath;
return this;
}
/**
* 设置隐私协议勾选框已勾选状态时显示的图片的路径
*
* @param checkedImgPath drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/checked.png,则传入参数为
* "checked",即setCheckedImgPath("checked")。
* @return
*/
public FusionNumberAuthModel.Builder setCheckedImgPath(String checkedImgPath)
/**
* 设置隐私协议勾选框初始状态(勾选或者未勾选)
*
* @param privacyState true初始时勾选,false初始时不勾选
* @return
*/
public FusionNumberAuthModel.Builder setPrivacyState(boolean privacyState)
/**
* 设置隐私协议文字对齐方式
*
* @param protocolGravity
* @return
* @see #setProtocolLayoutGravity(int)
*/
public FusionNumberAuthModel.Builder setProtocolGravity(int protocolGravity)
/**
* 设置状态栏颜色(系统版本 5.0 以上可设置)
*
* @param statusBarColor
* @return
*/
public FusionNumberAuthModel.Builder setStatusBarColor(@ColorInt int statusBarColor)
/**
* 设置状态栏颜色(系统版本 5.0 以上可设置)
*
* @param bottomNavColor
* @return
*/
public FusionNumberAuthModel.Builder setBottomNavColor(@ColorInt int bottomNavColor)
/**
* 设置状态栏字体颜色(系统版本 6.0 以上可设置黑色、白色)
*
* @param lightColor true 为黑色,false为白色
* @return
*/
public FusionNumberAuthModel.Builder setLightColor(boolean lightColor)
/**
* 设置登录按钮宽度
*
* @param logBtnWidth 单位 dp
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnWidth(int logBtnWidth)
/**
* 设置登录按钮高度
*
* @param logBtnHeight 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnHeight(int logBtnHeight)
/**
* 设置登录按钮相对于屏幕左右边缘边距
*
* @param logBtnMarginLeftAndRight 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnMarginLeftAndRight(int logBtnMarginLeftAndRight)
/**
* 设置隐私协议勾选框的宽
*
* @param checkBoxWidth 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setCheckBoxWidth(int checkBoxWidth)
/**
* 设置隐私协议勾选宽的高
*
* @param checkBoxHeight 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setCheckBoxHeight(int checkBoxHeight)
/**
* 设置号码栏相对于默认位置的X 轴偏移量
*
* @param numberFieldOffsetX 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setNumberFieldOffsetX(int numberFieldOffsetX)
/**
* 设置隐私条款文字大小
*
* @param privacyTextSize 单位sp
* @return
*/
public FusionNumberAuthModel.Builder setPrivacyTextSize(int privacyTextSize)
/**
* 设置隐私条款文字大小
*
* @param privacyTextSize 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setPrivacyTextSizeDp(int privacyTextSize)
/**
* 设置导航栏返回按钮图片宽度
*
* @param navReturnImgWidth 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setNavReturnImgWidth(int navReturnImgWidth)
/**
* 设置导航栏返回按钮图片高度
*
* @param navReturnImgHeight 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setNavReturnImgHeight(int navReturnImgHeight)
/**
* 设置隐私条款距离手机左右边缘的边距
*
* @param privacyMargin 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setPrivacyMargin(int privacyMargin)
/**
* 设置开发者隐私条款前置自定义文案
*
* @param privacyBefore
* @return
*/
public FusionNumberAuthModel.Builder setPrivacyBefore(String privacyBefore)
/**
* 设置开发者隐私条款尾部自定义文案
*
* @param privacyEnd
* @return
*/
public FusionNumberAuthModel.Builder setPrivacyEnd(String privacyEnd)
/**
* 设置登录loading动画图片路径
*
* @param loadingImgPath drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/loading.png,则传入参数为
* "loading",即setLoadingImgPath("loading")。
* @return Builder
*/
public FusionNumberAuthModel.Builder setLoadingImgPath(String loadingImgPath)
/**
* 设置授权页宽度
*
* @param dialogWidth 授权页宽度 单位DP
* @return Builder
*/
public FusionNumberAuthModel.Builder setDialogWidth(int dialogWidth)
/**
* 设置授权页高度
*
* @param dialogHeight 授权页高度 单位DP
* @return Builder
*/
public FusionNumberAuthModel.Builder setDialogHeight(int dialogHeight)
/**
* 设置授权页X轴偏移
*
* @param dialogOffsetX 授权页X轴偏移量 单位DP
* @return Builder
*/
public FusionNumberAuthModel.Builder setDialogOffsetX(int dialogOffsetX)
/**
* 设置授权页Y轴偏移
*
* @param dialogOffsetY 授权页Y轴偏移量 单位DP
* @return Builder
*/
public FusionNumberAuthModel.Builder setDialogOffsetY(int dialogOffsetY)
/**
* @param dialogBottom 设置授权页是否居于底部
* @return Builder
*/
public FusionNumberAuthModel.Builder setDialogBottom(boolean dialogBottom)
/**
* 设置授权页背景图
*
* @param pageBackgroundPath drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/loading.png,则传入参数为
* "loading",setPageBackgroundPath("loading")。
* @return Builder
*/
public FusionNumberAuthModel.Builder setPageBackgroundPath(String pageBackgroundPath)
/**
* 设置导航栏返回按钮隐藏
*
* @param navReturnHidden true:隐藏,false显示
* @return Builder
*/
public FusionNumberAuthModel.Builder setNavReturnHidden(boolean navReturnHidden)
/**
* 设置默认导航栏是否隐藏
*
* @param navHidden true:隐藏,false显示
* @return Builder
*/
public FusionNumberAuthModel.Builder setNavHidden(boolean navHidden)
/**
* 设置Logo图片缩放模式
*
* @param LogoScaleType
* @return
*/
public FusionNumberAuthModel.Builder setLogoScaleType(ImageView.ScaleType LogoScaleType)
/**
* 设置状态栏是否隐藏
*
* @param statusBarHidden true:隐藏,false显示
* @return
*/
public FusionNumberAuthModel.Builder setStatusBarHidden(boolean statusBarHidden)
/**
* 设置状态栏UI属性
*
* @param statusBarUIFlag 只能设置{@link android.view.View#SYSTEM_UI_FLAG_LOW_PROFILE}和{@link
* android.view.View#SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN}
* 状态栏低电量模式:View.SYSTEM_UI_FLAG_LOW_PROFILE
* 状态栏沉浸式模式:View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
* @return Builder
*/
public FusionNumberAuthModel.Builder setStatusBarUIFlag(@StatusBarUIFlag int statusBarUIFlag)
/**
* 设置协议页状态栏颜色(系统版本 5.0 以上可设置)
* 不设置则与授权页设置一致
*
* @param webViewStatusBarColor
* @return
*/
public FusionNumberAuthModel.Builder setWebViewStatusBarColor(@ColorInt int webViewStatusBarColor)
/**
* 设置协议页顶部导航栏背景色
* 不设置则与授权页设置一致
*
* @param webNavColor
* @return
*/
public FusionNumberAuthModel.Builder setWebNavColor(@ColorInt int webNavColor)
/**
* 设置协议页顶部导航栏标题颜色
* 不设置则与授权页设置一致
*
* @param webNavTextColor
* @return
*/
public FusionNumberAuthModel.Builder setWebNavTextColor(@ColorInt int webNavTextColor)
/**
* 设置协议页顶部导航栏文字大小
* 不设置则与授权页设置一致
*
* @param webNavTextSize 单位 sp
* @return
*/
@Deprecated
public FusionNumberAuthModel.Builder setWebNavTextSize(int webNavTextSize)
/**
* 设置协议页顶部导航栏文字大小
* 不设置则与授权页设置一致
*
* @param webNavTextSize 单位 sp
* @return
*/
public FusionNumberAuthModel.Builder setWebNavTextSizeDp(int webNavTextSize)
/**
* 设置协议页导航栏返回按钮图片路径
* 不设置则与授权页设置一致
*
* @param webNavReturnImgPath drawable资源的目录,不需要加后缀,比如图片在drawable中的存放目录是res/drawable-xxhdpi/return.png,则传入参数为
* "return",即setNavReturnImgPath("return")。
* @return
*/
public FusionNumberAuthModel.Builder setWebNavReturnImgPath(String webNavReturnImgPath)
/**
* 设置授权页唤起动画
*
* @param authPageActIn anim资源的目录,不需要加后缀,比如动画在anim目录中的存放目录是res/anim/authPageActIn.xml,则传入参数为
* "authPageActIn",setAuthPageActIn("authPageActIn", "activityOut")。
* @param activityOut
* @return
*/
public FusionNumberAuthModel.Builder setAuthPageActIn(String authPageActIn, String activityOut)
/**
* 设置授权页退出动画
*
* @param authPageActOut anim资源的目录,不需要加后缀,比如动画在anim目录中的存放目录是res/anim/authPageActIn.xml,则传入参数为
* "authPageActIn",setAuthPageActIn("authPageActIn", "activityOut")。
* @param activityIn
* @return
*/
public FusionNumberAuthModel.Builder setAuthPageActOut(String authPageActOut, String activityIn)
/**
* 设置协议选择框未勾选时点击登录按钮协议文字动画效果
*
* @param protocolShakePath anim资源的目录,不需要加后缀,比如动画在anim目录中的存放目录是res/anim/protocol_shake.xml,则传入参数为
* "authPageActIn",setAuthPageActIn("authPageActIn", "activityOut")。
* @param
* @return
*/
public FusionNumberAuthModel.Builder setProtocolShakePath(String protocolShakePath)
/**
* 设置运营商协议前缀符号
*
* @param vendorPrivacyPrefix 只能设置一个字符,且只能设置<>()《》【】『』[]()中的一个
* @return
*/
public FusionNumberAuthModel.Builder setVendorPrivacyPrefix(String vendorPrivacyPrefix) {
this.vendorPrivacyPrefix = vendorPrivacyPrefix;
return this;
}
/**
* 设置运营商协议后缀符号
*
* @param vendorPrivacySuffix 只能设置一个字符,且只能设置<>()《》【】『』[]()中的一个
* @return
*/
public FusionNumberAuthModel.Builder setVendorPrivacySuffix(String vendorPrivacySuffix)
/**
* 设置屏幕方向
*
* @param screenOrientation 取值为{@link ActivityInfo}中的屏幕方向常量值,比如
* {@link ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}、
* {@link ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}
* @return
*/
public FusionNumberAuthModel.Builder setScreenOrientation(@ScreenOrientation int screenOrientation)
/**
* 设置登录按钮X轴偏移量,如果设置了{@link #setLogBtnMarginLeftAndRight(int)},并且布局对齐方式为左对齐或者右对齐
* ,则会在margin的基础上再增加offsetX的偏移量,如果是居中对齐,则仅仅会在居中的基础上再做offsetX的偏移。
*
* @param offsetX 单位 dp
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnOffsetX(int offsetX)
/**
* 设置登录按钮布局对齐方式
*
* @param layoutGravity 只支持{@link Gravity#CENTER_HORIZONTAL}、{@link Gravity#LEFT}、{@link Gravity#RIGHT}三种对齐方式
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnLayoutGravity(int layoutGravity)
/**
* 设置手机号掩码的布局对齐方式
*
* @param layoutGravity 只支持{@link Gravity#CENTER_HORIZONTAL}、{@link Gravity#LEFT}、{@link Gravity#RIGHT}三种对齐方式
* @return
*/
public FusionNumberAuthModel.Builder setNumberLayoutGravity(int layoutGravity)
/**
* 设置隐私栏的布局对齐方式,该接口控制了整个隐私栏(包含checkbox)在其父布局中的对齐方式,而{@link #setProtocolGravity(int)}控制的
* 是隐私协议文字内容在文本框中的对齐方式。
*
* @param layoutGravity 只支持{@link Gravity#CENTER_HORIZONTAL}、{@link Gravity#LEFT}、{@link Gravity#RIGHT}三种对齐方式
* @return
*/
public FusionNumberAuthModel.Builder setProtocolLayoutGravity(int layoutGravity)
/**
* 设置隐私栏X轴偏移量
*
* @param offsetX 单位dp
* @return
*/
public FusionNumberAuthModel.Builder setPrivacyOffsetX(int offsetX)
public FusionNumberAuthModel.Builder setHiddenLoading(boolean hiddenLoading)
/**
* 设置checkbox未勾选时,点击登录按钮toast是否显示
*
* @param logBtnToastHidden
* @return
*/
public FusionNumberAuthModel.Builder setLogBtnToastHidden(boolean logBtnToastHidden)
public FusionNumberAuthModel.Builder setWebSupportedJavascript(boolean isSupported)
//设置返回按钮图片
public FusionNumberAuthModel.Builder setNavReturnImgDrawable(Drawable navReturnImgDrawable)
//设置Logo图片
public FusionNumberAuthModel.Builder setLogoImgDrawable(Drawable LogoImgDrawable)
//设置checkbox非选择状态图片
public FusionNumberAuthModel.Builder setUncheckedImgDrawable(Drawable uncheckedImgDrawable)
//设置checkbox选择状态图片
public FusionNumberAuthModel.Builder setCheckedImgDrawable(Drawable checkedImgDrawable)
//设置一键登录按钮背景图片
public FusionNumberAuthModel.Builder setLogBtnBackgroundDrawable(Drawable logBtnBackgroundDrawable)
//设置界面背景图
public FusionNumberAuthModel.Builder setPageBackgroundDrawable(Drawable pageBackgroundDrawable)
//loading背景图
public FusionNumberAuthModel.Builder setLoadingImgDrawable(Drawable loadingImgDrawable)
//号码认证二次弹窗是否显示
public FusionNumberAuthModel.Builder setPrivacyAlertIsNeedShow(boolean privacyAlertIsNeedShow)
//二次弹窗同意后是否自动登录
public FusionNumberAuthModel.Builder setPrivacyAlertIsNeedAutoLogin(boolean privacyAlertIsNeedAutoLogin)
//二次弹窗点击窗外区域弹窗是否消失
public FusionNumberAuthModel.Builder setTapPrivacyAlertMaskCloseAlert(boolean tapPrivacyAlertMaskCloseAlert)
//二次弹窗显示位置
public FusionNumberAuthModel.Builder setPrivacyAlertAlignment(int privacyAlertAlignment)
//二次弹窗宽度
public FusionNumberAuthModel.Builder setPrivacyAlertWidth(int privacyAlertWidth)
//二次弹窗高度
public FusionNumberAuthModel.Builder setPrivacyAlertHeight(int privacyAlertHeight)
//二次弹窗显示x轴
public FusionNumberAuthModel.Builder setPrivacyAlertOffsetX(int privacyAlertOffsetX)
//二次弹窗显示y轴
public FusionNumberAuthModel.Builder setPrivacyAlertOffsetY(int privacyAlertOffsetY)
//二次弹窗开始动画
public FusionNumberAuthModel.Builder setPrivacyAlertEntryAnimation(String privacyAlertEntryAnimation)
//二次弹窗退出动画
public FusionNumberAuthModel.Builder setPrivacyAlertExitAnimation(String privacyAlertExitAnimation)
//二次弹窗圆角
public FusionNumberAuthModel.Builder setPrivacyAlertCornerRadiusArray(int[] privacyAlertCornerRadiusArray)
//二次弹窗背景颜色
public FusionNumberAuthModel.Builder setPrivacyAlertBackgroundColor(int privacyAlertBackgroundColor)
//二次弹窗title背景颜色
public FusionNumberAuthModel.Builder setPrivacyAlertTitleBackgroundColor(int privacyAlertTitleBackgroundColor)
//二次弹窗文本显示背景颜色
public FusionNumberAuthModel.Builder setPrivacyAlertContentBackgroundColor(int privacyAlertContentBackgroundColor)
//二次弹窗透明度
public FusionNumberAuthModel.Builder setPrivacyAlertAlpha(float privacyAlertAlpha)
//二次弹窗背景蒙层透明度
public FusionNumberAuthModel.Builder setPrivacyAlertMaskAlpha(float privacyAlertMaskAlpha)
//二次弹窗title字体大小
public FusionNumberAuthModel.Builder setPrivacyAlertTitleTextSize(int privacyAlertTitleTextSize)
//二次弹窗title 字体颜色
public FusionNumberAuthModel.Builder setPrivacyAlertTitleColor(int privacyAlertTitleColor)
//二次弹窗title文字居中方式
public FusionNumberAuthModel.Builder setPrivacyAlertTitleAlignment(int privacyAlertTitleAlignment)
//二次弹窗title x坐标
public FusionNumberAuthModel.Builder setPrivacyAlertTitleOffsetX(int privacyAlertTitleOffsetX)
//二次弹窗title y坐标
public FusionNumberAuthModel.Builder setPrivacyAlertTitleOffsetY(int privacyAlertTitleOffsetY)
//二次弹窗文本协议颜色
public FusionNumberAuthModel.Builder setPrivacyAlertContentTextSize(int privacyAlertContentTextSize)
//二次弹窗文本颜色
public FusionNumberAuthModel.Builder setPrivacyAlertContentColor(int privacyAlertContentColor)
//二次弹窗文本颜色
public FusionNumberAuthModel.Builder setPrivacyAlertContentBaseColor(int privacyAlertContentBaseColor)
//二次弹窗文本居中方式
public FusionNumberAuthModel.Builder setPrivacyAlertContentAlignment(int privacyAlertContentAlignment)
//二次弹窗文本显示位置左右间距
public FusionNumberAuthModel.Builder setPrivacyAlertContentHorizontalMargin(int privacyAlertContentHorizontalMargin)
//二次弹窗文本显示位置上下间距
public FusionNumberAuthModel.Builder setPrivacyAlertContentVerticalMargin(int privacyAlertContentVerticalMargin)
//二次弹窗背景路径
public FusionNumberAuthModel.Builder setPrivacyAlertBtnBackgroundImgPath(String privacyAlertBtnBackgroundImgPath)
//二次弹窗确认按钮字体颜色
public FusionNumberAuthModel.Builder setPrivacyAlertBtnTextColor(int privacyAlertBtnTextColor)
//二次弹窗确认按钮字体颜色路径
public FusionNumberAuthModel.Builder setPrivacyAlertBtnTextColorPath(String privacyAlertBtnTextColorPath)
//二次弹窗确认按钮字体大小
public FusionNumberAuthModel.Builder setPrivacyAlertBtnTextSize(int privacyAlertBtnTextSize)
//二次弹窗背景
public FusionNumberAuthModel.Builder setPrivacyAlertBtnBackgroundImgDrawable(Drawable privacyAlertBtnBackgroundImgDrawable)
//二次弹窗按钮宽度
public FusionNumberAuthModel.Builder setPrivacyAlertBtnWidth(int privacyAlertBtnWidth)
//二次弹窗按钮高度
public FusionNumberAuthModel.Builder setPrivacyAlertBtnHeigth(int privacyAlertBtnHeigth)
//关闭按钮是否显示
public FusionNumberAuthModel.Builder setPrivacyAlertCloseBtnShow(boolean privacyAlertCloseBtnShow)
//关闭按钮图片路径
public FusionNumberAuthModel.Builder setPrivacyAlertCloseImagPath(String privacyAlertCloseImagPath)
//关闭按钮图片显示方式
public FusionNumberAuthModel.Builder setPrivacyAlertCloseScaleType(ImageView.ScaleType privacyAlertCloseScaleType)
//关闭按钮图片
public FusionNumberAuthModel.Builder setPrivacyAlertCloseImagDrawable (Drawable privacyAlertCloseImagDrawable)
//关闭按钮宽度
public FusionNumberAuthModel.Builder setPrivacyAlertCloseImgWidth(int privacyAlertCloseImgWidth)
//关闭按钮高度
public FusionNumberAuthModel.Builder setPrivacyAlertCloseImgHeight(int privacyAlertCloseImgHeight)
//背景蒙层是否显示
public FusionNumberAuthModel.Builder setPrivacyAlertMaskIsNeedShow(boolean privacyAlertMaskIsNeedShow)
}
}
短信认证自定义UI参数
public class AlicomFusionVerifyCodeView {
//顶部title区域
private RelativeLayout titleRl;
//返回按钮
private ImageView returnImg;
//标题文本框
private TextView titleContentTV;
//自动填充手机号区域
private AlicomFusionAutoInputView autoInputView;
//手动输入手机号区域
private AlicomFusionInputView inputView;
//输入及发送验证码区域
private AlicomFusionSendVerifyCodeView sendVerifyCodeView;
//获取验证码
public void verifyCodeBtnClick(String phoneNumber)
//校验验证码
public void submitVerifyCodeBtnClick(String phoneNumber,String code)
}
自动填充手机号区域
public class AlicomFusionAutoInputView {
/**自动填充布局上方显示手机号及提示信息*/
private RelativeLayout autoInputMsgRL;
/**自动填充布局手机号展示*/
private TextView autoInputPhoneNumTV;
/**自动填充布局提示信息*/
private TextView autoInputPhoneHintTV;
/**自动填充布局获取验证码*/
private TextView autoInputRequestCodeTV;
}
手动输入手机号区域
public class AlicomFusionInputView {
/**国家号及手机号输入框区域*/
private RelativeLayout inputNumberContentRL;
/**国家号*/
private TextView mCountryTV;
/**手机号输入框*/
private EditText inputNumberET;
/**手动输入手机号布局获取验证码*/
private TextView inputNumberRequestCodeTV;
/**协议区域*/
private RelativeLayout privacyRL;
/**协议复选框*/
private CheckBox agreePrivacy;
/**协议文本*/
private TextView privacyTV;
}
输入及发送验证码区域
public class AlicomFusionSendVerifyCodeView {
/**提示信息*/
private TextView sendSmsHint;
/**验证码输入区域*/
private RelativeLayout sendSmsCodeRL;
/**第⼀位验证码*/
private EditText firstCode;
/**第⼆位验证码*/
private EditText secondCode;
/**第三位验证码*/
private EditText thirdCode;
/**第四位验证码*/
private EditText fourCode;
/**第五位验证码*/
private EditText fivthCode;
/**第六位验证码*/
private EditText sixthCode;
/**发送验证码按钮*/
private TextView sendSmsCode;
}
上行短信认证自定义UI
public class AlicomFusionUpSMSView {
//上行短信界面顶部导航区域
private RelativeLayout titleRl;
//返回按钮
private ImageView returnImg;
//title文本
private TextView titleContentTV;
//提示信息区域
private RelativeLayout remindRl;
//提示信息文本框
private TextView smsRemindTV;
//短信内容区域
private RelativeLayout smsContentRl;
//短信内容文本框
private TextView smsContentTV;
//接收号码区域
private RelativeLayout receiveSmsNumberRl;
//接收号码文本框
private TextView receiveSmsNumberTV;
//⽴即发送短信按钮
private TextView sendSmsTV;
//我⼀发送短信按钮
private TextView HadSenTSmsTV;
//发送短信
public void gotoSendUpSms(String receivePhoneNumber,String verifyCode
)
//发送短信校验
public void upSmsAlreadySend()
}
SDK回调说明
主流程回调(AlicomFusionAuthCallBack)
流程各个节点运行状态都通过回调来通知用户。
用户在收到相应回调前属于节点运行状态,此状态下startSceneWithTemplateId、continueSceneWithTemplateId、stopSceneWithTemplateId调用无效。
/**
* token需要更新只在超时调用获取
* @note 必选回调,handler初始化&历史Token过期前5分钟,会触发此回调,由SDK维护token的生命周期
* @return token,APP更新最新token后,组装Token返回给到SDK,SDK会通过此Token进行鉴权更新
* 用户可在此处进行token获取,两次请求,每次30s,60s后无法获取会报token获取超时
*/
AlicomFusionAuthToken onSDKTokenUpdate();
/**
* token鉴权成功
* @note 必选回调,token鉴权成功后,才可以使用startScene接口拉起场景
* @note 不建议在本回调中直接调用startScene接口,本回调跟随token鉴权事件触发,可能存在多次回调
* startSceneWithTemplateId开始场景必须在该回调后进行,具体逻辑参考demo
*/
void onSDKTokenAuthSuccess();
/**
* token鉴权失败
* @note 必选回调,token初次鉴权失败&token更新后鉴权失败均会触发此回调
* @note token鉴权失败后,无法继续使用SDK的功能,请销毁SDK后重新初始化
* @param failToken 错误token
* @param error 错误定义
*/
void onSDKTokenAuthFailure(AlicomFusionAuthToken failToken, AlicomFusionEvent error);
/**
* 认证成功
* @note 必选回调
* @note 可以使用码号效验maskToken去APP Server做最终验证换取真实手机号码,如果换取手机号失败,可以通过SDK的continue接口继续后续场景流程
* @param token 换号校验token
* @param nodeName 获取token的节点名称
* @param event verify成功事件
* 认证成功即各节点成功获取相应token,用户可使用相应token进行换号或登录操作,根据操作反馈选择继续或中断流程
* 具体逻辑参考demo
*/
void onVerifySuccess(String token,String nodeName,AlicomFusionEvent event);
/** 中途认证节点,需要知道中途认证结果,否则影响流程继续执行
* @note 必选回调
* @note 可以使用码号效验maskToken去APP Server做最终验证换取真实手机号码,通过resultBlock告知SDK验证结果,如果失败则SDK不进行任何操作,成功则进入下一个节点
* @param nodeName 获取token的节点名称
* @param maskToken 换号校验token
* @param event 事件
* @param verifyResult 回调
* 该回调出现在换号场景对当前登录账号获取token进行验证,根据验证结果调用continueSceneWithTemplateId
* 决定流程走向,具体逻辑参考demo
*/
void onHalfWayVerifySuccess(String nodeName, String maskToken,AlicomFusionEvent event,HalfWayVerifyResult verifyResult);
/**
* 认证成功
* @note 必选回调
* @note 当接收到这个回调的时候说明在当前场景中出现获取token失败的情况,是否继续由接入方控制
* @param error 获取token失败事件
* @param nodeName 获取token的节点名称
* 认证失败回调,如号码认证中无法拉起授权页,token获取失败,短信界面无法获取短信或者开启手机号校验
* 时输入手机号与传入手机号不符及开启自动填充后传入手机号小于11位,上行界面获取上行信息失败等情况
* 认证失败后可选择继续或者中断流程,具体逻辑参考demo
*/
void onVerifyFailed(AlicomFusionEvent error,String nodeName);
/**
* 场景流程结束 正常加异常结束
* @note 必选回调,认证流程结束,认证失败,不可逆
* @param event 错误定义
* 融合认证SDK内部流程已结束,需要用户调用stopSceneWithTemplateId中断流程
*/
void onTemplateFinish(AlicomFusionEvent event);
/**
* 场景事件回调
* @note 可选回调,SDK场景流程中各个界面点击事件&界面跳转事件等UI相关回调
* @note 本回调接口仅做事件通知,不可再此回调内处理业务逻辑
* @param event 点击事件 用户操作记录
* 对SDK内部关键节点运行回调,辅助开发,快速定位问题
*/
void onAuthEvent(AlicomFusionEvent event);
/**
* 填充手机号,用于校验手机号是否和输入的一致,或者重新绑定手机号场景自动填充手机号
* @note 必选回调,SDK内置UI部分手机号
* @param nodeId 节点id
* @param event 事件
* @return 返回当前用户正在使用的手机号用于下一步操作
* 如果开启自动填充或者自动校验,用户需传入相应号码继续流程,具体逻辑参考demo
*/
String onGetPhoneNumberForVerification(String nodeId,AlicomFusionEvent event);
/**
* 认证中断
* @note 必选回调
* @note 认证流程临时中断,APP可根据不同事件显示对应的提示信息
* @note 触发条件:1. 未勾选隐私协议框,进行认证;2. 验证手机号码输入格式错误,3sdk开始加载某个节点和结束加载某个节点,4、相关的接口可用校验
* @param event 中断原因
* 流程无法进行停留在当前界面,此回调处于节点进行状态,开始继续或中断方法无效
*/
void onVerifyInterrupt(AlicomFusionEvent event);
使用示例
mAlicomFusionAuthCallBack = new AlicomFusionAuthCallBack() {
@Override
public AlicomFusionAuthToken onSDKTokenUpdate() {
Log.d(TAG, "AlicomFusionAuthCallBack---onSDKTokenUpdate");
AlicomFusionAuthToken token=new AlicomFusionAuthToken();
CountDownLatch latch=new CountDownLatch(1);
new Thread(new Runnable() {
@Override
public void run() {
GlobalInfoManager.getInstance().setToken(HttpRequestUtil.getAuthToken(GlobalInfoManager.getInstance().getContext()));
latch.countDown();
}
}).start();
try {
latch.await();
token.setAuthToken(GlobalInfoManager.getInstance().getToken());
} catch (InterruptedException e) {
}
return token;
}
@Override
public void onSDKTokenAuthSuccess() {
Log.d(TAG, "AlicomFusionAuthCallBack---onSDKTokenAuthSuccess");
verifySuccess=true;
}
@Override
public void onSDKTokenAuthFailure(AlicomFusionAuthToken token, AlicomFusionEvent alicomFusionEvent) {
Log.d(TAG, "AlicomFusionAuthCallBack---onSDKTokenAuthFailure "+alicomFusionEvent.toString());
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
String token = HttpRequestUtil.getAuthToken(GlobalInfoManager.getInstance().getContext());
GlobalInfoManager.getInstance().setToken(token);
AlicomFusionAuthToken authToken=new AlicomFusionAuthToken();
authToken.setAuthToken(GlobalInfoManager.getInstance().getToken());
mAlicomFusionBusiness.updateToken(authToken);
}
}).start();
}
@Override
public void onVerifySuccess(String token, String s1, AlicomFusionEvent alicomFusionEvent) {
Log.d(TAG, "AlicomFusionAuthCallBack---onVerifySuccess " +token);
new Thread(new Runnable() {
@Override
public void run() {
String mobilNum = HttpRequestUtil.verifyToken(GlobalInfoManager.getInstance().getContext(), token);
updateBusiness(mobilNum,s1);
}
}).start();
}
@Override
public void onHalfWayVerifySuccess(String nodeName, String maskToken, AlicomFusionEvent alicomFusionEvent, HalfWayVerifyResult halfWayVerifyResult) {
Log.d(TAG, "AlicomFusionAuthCallBack---onHalfWayVerifySuccess "+maskToken);
new Thread(new Runnable() {
@Override
public void run() {
String result = HttpRequestUtil.verifyToken(GlobalInfoManager.getInstance().getContext(), maskToken);
updateBusinessHalfWay(result,halfWayVerifyResult,nodeName);
}
}).start();
}
@Override
public void onVerifyFailed(AlicomFusionEvent alicomFusionEvent, String s) {
Log.d(TAG, "AlicomFusionAuthCallBack---onVerifyFailed "+alicomFusionEvent.toString()());
mAlicomFusionBusiness.continueSceneWithTemplateId("100001",false);
}
@Override
public void onTemplateFinish(AlicomFusionEvent alicomFusionEvent) {
Log.d(TAG, "AlicomFusionAuthCallBack---onTemplateFinish "+alicomFusionEvent.toString());
sum=0;
mAlicomFusionBusiness.stopSceneWithTemplateId("100001");
}
@Override
public void onAuthEvent(AlicomFusionEvent alicomFusionEvent) {
Log.d(TAG, "AlicomFusionAuthCallBack---onAuthEvent"+alicomFusionEvent.toString());
}
@Override
public String onGetPhoneNumberForVerification(String s, AlicomFusionEvent alicomFusionEvent) {
Log.d(TAG, "AlicomFusionAuthCallBack---onGetPhoneNumberForVerification");
return GlobalInfoManager.getInstance().getUserInfo();
}
@Override
public void onVerifyInterrupt(AlicomFusionEvent alicomFusionEvent) {
Log.d(TAG, "AlicomFusionAuthCallBack---onVerifyInterrupt"+alicomFusionEvent.toString());
}
};
mAlicomFusionBusiness.setAlicomFusionAuthCallBack(mAlicomFusionAuthCallBack);
界面UI流程回调(AlicomFusionAuthUICallBack)
/**
* ⼀键登录自UI注意,请不要调整view id属性否则可能造成部分功能无法使用
* @note ⾃定义⼀键登录相关UI界面,⼀键登录界面不可100%完全自定义,请通过AlicomFusionNumberAuthModel参数进行修改
* @param templateId 场景ID
* @param nodeId 节点ID
* @param authConfig 自定义UI属性
*/
void onPhoneNumberVerifyUICustomView(String templateId,String nodeId, FusionNumberAuthModel authConfig);
/**
* 短信验证码认证自定义UI注意,请不要调整view id属性否则可能造成部分功能无法使用
* @note 短信验证码界面修改
* @param templateId 场景ID
* @param nodeId 节点ID
* @param isAutoInput 是否自动填充手机用户配置autoNumberShow值进行判断
* 是否填充通过AlicomFusionAuthCallBack回调的onGetPhoneNumberForVerification方法传入的手机号
* @param view 短信验证码界面view
*/
void onSMSCodeVerifyUICustomView(String templateId,String nodeId,booleanisAutoInput, AlicomFusionVerifyCodeView view);
/**
* 上⾏短信认证自定义UI注意,请不要调整view id属性否则可能造成部分功能无法使用
* @note 上行短信认证界面相关UI修改
* @param templateId 场景ID
* @param nodeId 节点ID
* @param view 上行短信认证界面view
* @param receivePhoneNumber 短信接收号码
* @param verifyCode 短信内容
*/
void onSMSSendVerifyUICustomView(String templateId,String nodeId, AlicomFusionUpSMSView view,String receivePhoneNumber,String verifyCode);