- 此 SDK 整合了三大运营商的网关认证能力,为开发者提供了一键登录功能,优化用户注册/登录、号码验证体验,提高安全性
- 使用场景:注册,登录,验证
- 目前SDK只支持 Android 4.0 或以上版本的手机系统
##SDK 接入指南
-
将 SDK aar 文件放入工程 lib 下。
-
在工程 module 的 gradle 文件中加入
repositories { flatDir { dirs 'libs' // aar目录 } }
-
在 dependencies 下加入
implementation(name: 'verification-2.0.1', ext: 'aar')
-
添加 manifest 变量
manifestPlaceholders = [ // 你的应用 Appkey UPYUN_APPKEY : "5195ff1bded312cfe2ac46aa", //你的应用渠道 UPYUN_CHANNEL: "default_developer", ]
在应用 module Androidmanifest 中配置(aar 已配置 networkSecurityConfig ,应用中未修改可忽略)
android:networkSecurityConfig="@xml/network_security_config"
<p>在res目录下新建xml目录,并新建 network_security_config.xml(aar 已配置 network_security_config ,应用中未修改可忽略)</p>
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
- 请下载 4.x 及以上版本的 proguard.jar, 并替换你 Android SDK "tools\proguard\lib\proguard.jar"
- 请在工程的混淆文件中添加以下配置:
-dontoptimize -dontpreverify
-dontwarn cn.jpush.** -keep class cn.jpush.** { *; } -dontwarn cn.jiguang.** -keep class cn.jiguang.** { *; } -dontwarn cn.com.chinatelecom.** -keep class cn.com.chinatelecom.** { *; } -dontwarn com.ct.** -keep class com.ct.** { *; } -dontwarn a.a.** -keep class a.a.** { *; } -dontwarn com.cmic.** -keep class com.cmic.** { *; } -dontwarn com.unicom.** -keep class com.unicom.** { *; } -dontwarn com.sdk.** -keep class com.sdk.** { *; } -dontwarn com.sdk.** -keep class com.sdk.** { *; }
- UpVerificationInterface,包含SDK所有接口
- UpVerificationInterface.init(Context context,int timeOut,RequestCallback callback)
- 接口说明:
- 初始化接口。建议在Application的onCreate中调用
- 参数说明:
- context:android的上下文
- timeOut: 超时时间(毫秒),有效取值范围(0,30000],若小于等于0或大于30000则取默认值10000.推荐设置为5000-10000.
- callback:回调接口
- 回调说明: onResult(int code, String msg) + code: 返回码,8000代表初始化成功,其他为失败,详见错误码描述 + msg:结果描述
- 调用示例:
- 接口说明:
UpVerificationInterface.init(this, 5000, new RequestCallback<String>() {
@Override
public void onResult(int code, String msg) {
Log.d("tag","code = " + code + " msg = " + msg);
}
});
- UpVerificationInterface.init(Context context,RequestCallback callback)
- 接口说明:
- 初始化接口。建议在Application的onCreate中调用
- 参数说明:
- context:android的上下文
- callback:回调接口
- 回调说明:onResult(int code, String msg)
- code: 返回码,8000代表初始化成功,其他为失败,详见错误码描述
- msg:结果描述
- 调用示例:
- 接口说明:
UpVerificationInterface.init(this, new RequestCallback<String>() {
@Override
public void onResult(int code, String msg) {
Log.d("tag","code = " + code + " msg = " + msg);
}
});
- UpVerificationInterface.init(Context context)
- 接口说明:
- 初始化接口。建议在Application的onCreate中调用
- 参数说明:
- context:android的上下文
- 调用示例:
- 接口说明:
UpVerificationInterface.init(this);
- UpVerificationInterface.isInitSuccess()
- 接口说明:
- 获取sdk是否整体初始化成功的标识
- 返回结果
- boolean : true - 成功,false - 失败
- 调用示例:
- 接口说明:
boolean isSuccess = UpVerificationInterface.isInitSuccess();
- UpVerificationInterface.setDebugMode(boolean enable)
- 接口说明:
- 设置是否开启debug模式。true则会打印更多的日志信息。建议在init接口之前调用。
- 参数说明:
- enable:debug开关
- 调用示例:
- 接口说明:
UpVerificationInterface.setDebugMode(true);
- UpVerificationInterface.checkVerifyEnable(Context context)
- 接口说明:
- 判断当前的手机网络环境是否可以使用认证。
- 参数说明:
- context:android的上下文
- 返回说明:
- 返回true代表可以使用;返回false建议使用其他验证方式。
- 调用示例:
- 接口说明:
boolean verifyEnable = UpVerificationInterface.checkVerifyEnable(this);
if(!verifyEnable){
Log.d(TAG,"当前网络环境不支持认证");
return;
}
- sdk会缓存预取号结果,提升之后授权页拉起速度。所以建议拉起授权页前,比如在开屏页或者业务入口页预先调用此接口进行预取号。
- 请求成功后,不要频繁重复调用。
- 不要在预取号回调中重复调用预取号或者拉起授权页接口。
- UpVerificationInterface.preLogin(Context context, int timeOut, PreLoginListener listener){
- 接口说明:
- 验证当前运营商网络是否可以进行一键登录操作,该方法会缓存取号信息,提高一键登录效率。建议发起一键登录前先调用此方法。
- 参数说明:
- context:android的上下文
- timeOut: 超时时间(毫秒),有效取值范围(0,10000],若小于等于0则取默认值5000.大于10000则取10000, 为保证预取号的成功率,建议设置为3000-5000ms.
- listener:接口回调
- 回调说明:
onResult(int code, String content)
- code: 返回码,7000代表获取成功,其他为失败,详见错误码描述
- content:调用结果信息描述
- 调用示例:
- 接口说明:
UpVerificationInterface.preLogin(this, 5000,new PreLoginListener() {
@Override
public void onResult(final int code, final String content) {
Log.d(TAG,"[" + code + "]message=" + content );
}
});
- UpVerificationInterface.clearPreLoginCache(){
- 接口说明:
- 清除sdk当前预取号结果缓存。
- 调用示例:
- 接口说明:
UpVerificationInterface.clearPreLoginCache();
- 一键登录需要依赖预取号结果,如果没有预取号,一键登录时会自动预取号。
- 建议拉起授权页前,比如在开屏页或者业务入口页预先调用此接口进行预取号,可以提升授权页拉起速度,优化体验。
- 一键登录请求成功后,不要频繁重复调用。运营商会限制单位时间内请求次数。
- 不要在一键登录回调中重复调用预取号或者拉起授权页接口。
- UpVerificationInterface.loginAuth(final Context context, LoginSettings settings, final VerifyListener listener)
- 接口说明:
- 调起一键登录授权页面,在用户授权后获取loginToken,同时支持授权页事件监听
- 参数说明:
- context:android的上下文
- settings:登录接口设置项。
- listener:登录授权结果回调
- 回调说明:
VerifyListener
onResult(int code, String content, String operator)- code: 返回码,6000代表loginToken获取成功,6001代表loginToken获取失败,其他返回码详见描述
- content:返回码的解释信息,若获取成功,内容信息代表loginToken。
- operator:成功时为对应运营商,CM代表中国移动,CU代表中国联通,CT代表中国电信。失败时可能为null
- 调用示例:
- 接口说明:
LoginSettings settings = new LoginSettings();
settings.setAutoFinish(true);//设置登录完成后是否自动关闭授权页
settings.setTimeout(15 * 1000);//设置超时时间,单位毫秒。 合法范围(0,30000],范围以外默认设置为10000
settings.setAuthPageEventListener(new AuthPageEventListener() {
@Override
public void onEvent(int cmd, String msg) {
//do something...
}
});//设置授权页事件监听
UpVerificationInterface.loginAuth(this, settings, new VerifyListener() {
@Override
public void onResult(int code, String content, String operator) {
if (code == 6000){
Log.d(TAG, "code=" + code + ", token=" + content+" ,operator="+operator);
}else{
Log.d(TAG, "code=" + code + ", message=" + content);
}
}
});
- UpVerificationInterface.loginAuth(final Context context, boolean autoFinish, final VerifyListener listener, final AuthPageEventListener authPageEventListener)
- 接口说明:
- 调起一键登录授权页面,在用户授权后获取loginToken,同时支持授权页事件监听
- 参数说明:
- context:android的上下文
- boolean:是否自动关闭授权页,true - 是,false - 否
- listener:登录授权结果回调
- authPageEventListener:授权页事件回调
- 回调说明:
- VerifyListener
onResult(int code, String content, String operator)- code: 返回码,6000代表loginToken获取成功,6001代表loginToken获取失败,其他返回码详见描述
- content:返回码的解释信息,若获取成功,内容信息代表loginToken。
- operator:成功时为对应运营商,CM代表中国移动,CU代表中国联通,CT代表中国电信。失败时可能为null
- AuthPageEventListener
onEvent(int code, String content)- cmd: 返回码,具体见事件返回码表。
- content:内容描述。
- VerifyListener
- 调用示例:
- 接口说明:
UpVerificationInterface.loginAuth(this, false, new VerifyListener() {
@Override
public void onResult(int code, String content, String operator) {
if (code == 6000){
Log.d(TAG, "code=" + code + ", token=" + content+" ,operator="+operator);
}else{
Log.d(TAG, "code=" + code + ", message=" + content);
}
}
},new AuthPageEventListener() {
@Override
public void onEvent(int cmd, String msg) {
Log.d(TAG, "[onEvent]. [" + cmd + "]message=" + msg);
}
});
code | message | 备注 |
---|---|---|
1 | login activity closed. | 授权页关闭事件 |
2 | login activity started. | 授权页打开事件 |
3 | carrier privacy clicked. | 运营商协议点击事件 |
4 | privacy 1 clicked. | 自定义协议1点击事件 |
5 | privacy 2 clicked. | 自定义协议2点击事件 |
6 | checkbox checked. | 协议栏checkbox变为选中事件 |
7 | checkbox unchecked. | 协议栏checkbox变为未选中事件 |
8 | login button clicked. | 一键登录按钮(可用状态下)点击事件 |
- UpVerificationInterface.loginAuth(final Context context, boolean autoFinish, final VerifyListener listener)
- 接口说明:
- 调起一键登录授权页面,在用户授权后获取loginToken
- 参数说明:
- context:android的上下文
- boolean:是否自动关闭授权页,true - 是,false - 否;若此字段设置为false,请在收到一键登录回调后调用SDK提供的关闭授权页面方法。
- listener:接口回调
- 回调说明:
onResult(int code, String content, String operator)
- code: 返回码,6000代表loginToken获取成功,6001代表loginToken获取失败,其他返回码详见描述
- content:返回码的解释信息,若获取成功,内容信息代表loginToken。
- operator:成功时为对应运营商,CM代表中国移动,CU代表中国联通,CT代表中国电信。失败时可能为null
- 调用示例:
- 接口说明:
UpVerificationInterface.loginAuth(this, false, new VerifyListener() {
@Override
public void onResult(int code, String content, String operator) {
if (code == 6000){
Log.d(TAG, "code=" + code + ", token=" + content+" ,operator="+operator);
}else{
Log.d(TAG, "code=" + code + ", message=" + content);
}
}
});
说明:获取到一键登录的loginToken后,将其返回给应用服务端,从服务端调用REST API来获取手机号码
- UpVerificationInterface.loginAuth(final Context context, final VerifyListener listener)
- 接口说明:
- 调起一键登录授权页面,在用户授权后获取loginToken
- 参数说明:
- context:android的上下文
- listener:接口回调
- 回调说明:
onResult(int code, String content, String operator)
- code: 返回码,6000代表loginToken获取成功,6001代表loginToken获取失败,其他返回码详见描述
- content:返回码的解释信息,若获取成功,内容信息代表loginToken。
- operator:成功时为对应运营商,CM代表中国移动,CU代表中国联通,CT代表中国电信。失败时可能为null
- 调用示例:
- 接口说明:
UpVerificationInterface.loginAuth(this, new VerifyListener() {
@Override
public void onResult(int code, String content, String operator) {
if (code == 6000){
Log.d(TAG, "code=" + code + ", token=" + content+" ,operator="+operator);
}else{
Log.d(TAG, "code=" + code + ", message=" + content);
}
}
});
- dismissLoginAuthActivity(boolean needCloseAnim, RequestCallback callback)
- 接口说明:
- 关闭登录授权页,如果当前授权正在进行,则loginAuth接口会立即触发6002取消回调。
- 参数说明:
- needCloseAnim:是否需要展示默认授权页关闭的动画(如果有)。true - 需要,false - 不需要
- 回调说明:
RequestCallback
onResult(int code, String desc)- code: 返回码,0 标识成功关闭授权页
- desc:返回码的描述信息。
- 调用示例:
- 接口说明:
UpVerificationInterface.dismissLoginAuthActivity(true, new RequestCallback<String>() {
@Override
public void onResult(int code, String desc) {
Log.i(TAG, "[dismissLoginAuthActivity] code = " + code + " desc = " + desc);
}
});
- UpVerificationInterface.dismissLoginAuthActivity()
- 接口说明:
- 关闭登录授权页,如果当前授权正在进行,则loginAuth接口会立即触发6002取消回调。
- 调用示例:
- 接口说明:
UpVerificationInterface.dismissLoginAuthActivity();
- UpVerificationInterface.setCustomUIWithBuilder(UpVerifyUiBuilder uiBuilder)
- 接口说明:
- 修改授权页面主题,开发者可以通过 setCustomUIWithBuilder 方法修改授权页面主题,需在 loginAuth 接口之前调用
- 参数说明:
- uiConfig:主题配置对象,开发者在 UpVerifyUiBuilder.java 类中调用对应的方法配置授权页中对应的元素
- 调用示例:
- 接口说明:
UpVerifyUiBuilder uiBuilder = new UpVerifyUiBuilder() .setAuthBGImgPath("main_bg") .setNavColor(0xff0086d0) .setNavText("登录") .setNavTextColor(0xffffffff) .setNavReturnImgPath("umcsdk_return_bg") .setLogoWidth(70) .setLogoHeight(70) .setLogoHidden(false) .setNumberColor(0xff333333) .setLogBtnText("本机号码一键登录") .setLogBtnTextColor(0xffffffff) .setLogBtnImgPath("umcsdk_login_btn_bg") .setAppPrivacyOne("应用自定义服务条款一","https://www.jiguang.cn/about") .setAppPrivacyTwo("应用自定义服务条款二","https://www.jiguang.cn/about") .setAppPrivacyColor(0xff666666,0xff0085d0) .setUncheckedImgPath("umcsdk_uncheck_image") .setCheckedImgPath("umcsdk_check_image") .setSloganTextColor(0xff999999) .setLogoOffsetY(50) .setLogoImgPath("logo_cm") .setNumFieldOffsetY(170) .setSloganOffsetY(230) .setLogBtnOffsetY(254) .setNumberSize(18) .setPrivacyState(false) .setNavTransparent(false) .addCustomView(mBtn, true, new UpVerifyUIClickCallback() { @Override public void onClicked(Context context, View view) { Toast.makeText(context,"动态注册的其他按钮",Toast.LENGTH_SHORT).show(); } }).addCustomView(mBtn2, false, new UpVerifyUIClickCallback() { @Override public void onClicked(Context context, View view) { Toast.makeText(context,"动态注册的其他按钮222",Toast.LENGTH_SHORT).show(); } }).addNavControlView(navBtn, new UpVerifyUIClickCallback() { @Override public void onClicked(Context context, View view) { Toast.makeText(context,"导航栏按钮点击",Toast.LENGTH_SHORT).show(); } }).setPrivacyOffsetY(30); UpVerificationInterface.setCustomUIWithBuilder(uiBuilder);
-
addCustomView(View view, boolean finishFlag,UpVerifyUIClickCallback callback)
- 接口说明:
- 在授权页面添加自定义控件
- 参数说明:
- view:开发者传入自定义的控件,开发者需要提前设置好控件的布局属性,SDK只支持RelativeLayout布局
- finishFlag:是否在授权页面通过自定义控件的点击finish授权页面
- callback: 自定义控件的点击回调
-
回调说明: onClicked(Context context, View view)
- context:android的上下文
- view:自定义的控件的对象
-
调用示例:
- 接口说明:
Button mBtn = new Button(this); mBtn.setText("其他方式登录"); RelativeLayout.LayoutParams mLayoutParams1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); mLayoutParams1.setMargins(0, LoginUIHelper.dp2Pix(this,450.0f),0,0); mBtn.setLayoutParams(mLayoutParams1); new UpVerifyUiBuilderUpVerifyUiBuilder().addCustomView(mBtn, true, new UpVerifyUIClickCallback() { @Override public void onClicked(Context context, View view) { Toast.makeText(context,"动态注册的其他按钮",Toast.LENGTH_SHORT).show(); } });
-
addNavControlView(View view, UpVerifyUIClickCallback callback)
- 接口说明:
- 在授权页中顶部导航栏添加自定义控件
- 参数说明:
- view:开发者传入自定义的控件,开发者需要提前设置好控件的布局属性,SDK只支持RelativeLayout布局
- callback: 自定义控件的点击回调
- 回调说明:
- onClicked(Context context, View view)
- context:android的上下文
- view:自定义的控件的对象
- onClicked(Context context, View view)
- 调用示例:
- 接口说明:
Button navBtn = new Button(this); navBtn.setText("导航栏按钮"); RelativeLayout.LayoutParams navBtnParam = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); navBtnParam.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,RelativeLayout.TRUE); navBtn.setLayoutParams(navBtnParam); new UpVerifyUiBuilderUpVerifyUiBuilder.addNavControlView(navBtn, new UpVerifyUIClickCallback() { @Override public void onClicked(Context context, View view) { Toast.makeText(context,"导航栏按钮点击",Toast.LENGTH_SHORT).show(); } });
x轴未设置偏移则所有组件默认横向居中
-
设置授权页背景
- 说明:图片会默认拉伸铺满整个屏幕,适配不同尺寸手机,建议使用 .9.png 图片来解决适配问题。
方法 参数类型 说明 setAuthBGImgPath String 设置背景图片 -
状态栏
方法 参数类型 说明 setStatusBarColorWithNav boolean 设置状态栏与导航栏同色。仅在android 5.0以上设备生效。 setStatusBarDarkMode boolean 设置状态栏暗色模式。仅在android 6.0以上设备生效。 setStatusBarTransparent boolean 设置状态栏是否透明。仅在android 4.4以上设备生效。 setStatusBarHidden boolean 设置状态栏是否隐藏。 setVirtualButtonTransparent boolean 设置虚拟按键栏背景是否透明。 -
授权页导航栏
方法 | 参数类型 | 说明 |
---|---|---|
setNavColor | int | 设置导航栏颜色 |
setNavText | String | 设置导航栏标题文字 |
setNavTextColor | int | 设置导航栏标题文字颜色 |
setNavReturnImgPath | String | 设置导航栏返回按钮图标 |
setNavTransparent | boolean | 设置导航栏背景是否透明。默认不透明。 |
setNavTextSize | int | 设置导航栏标题文字字体大小(单位:sp)。 |
setNavReturnBtnHidden | boolean | 设置导航栏返回按钮是否隐藏。默认不隐藏。 |
setNavReturnBtnWidth | int | 设置导航栏返回按钮宽度。 |
setNavReturnBtnHeight | int | 设置导航栏返回按钮高度。 |
setNavReturnBtnOffsetX | int | 设置导航栏返回按钮距屏幕左侧偏移。 |
setNavReturnBtnRightOffsetX | int | 设置导航栏返回按钮距屏幕右侧偏移。 |
setNavReturnBtnOffsetY | int | 设置导航栏返回按钮距上端偏移。 |
setNavHidden | boolean | 设置导航栏是否隐藏。 |
-
授权页logo
方法 参数类型 说明 setLogoWidth int 设置logo宽度(单位:dp) setLogoHeight int 设置logo高度(单位:dp) setLogoHidden boolean 隐藏logo setLogoOffsetY int 设置logo相对于标题栏下边缘y偏移 setLogoImgPath String 设置logo图片 setLogoOffsetX int 设置logo相对于屏幕左边x轴偏移。 setLogoOffsetBottomY int 设置logo相对于屏幕底部y轴偏移。 -
授权页号码栏
方法 | 参数类型 | 说明 |
---|---|---|
setNumberColor | int | 设置手机号码字体颜色 |
setNumberSize | Number | 设置手机号码字体大小(单位:sp)。 |
setNumFieldOffsetY | int | 设置号码栏相对于标题栏下边缘y偏移 |
setNumFieldOffsetX | int | 设置号码栏相对于屏幕左边x轴偏移。 |
setNumberFieldOffsetBottomY | int | 设置号码栏相对于屏幕底部y轴偏移。 |
setNumberFieldWidth | int | 设置号码栏宽度。 |
setNumberFieldHeight | int | 设置号码栏高度。 |
- 授权页登录按钮
方法 | 参数类型 | 说明 |
---|---|---|
setLogBtnText | String | 设置登录按钮文字 |
setLogBtnTextColor | int | 设置登录按钮文字颜色 |
setLogBtnImgPath | String | 设置授权登录按钮图片 |
setLogBtnOffsetY | int | 设置登录按钮相对于标题栏下边缘y偏移 |
setLogBtnOffsetX | int | 设置登录按钮相对于屏幕左边x轴偏移。 |
setLogBtnWidth | int | 设置登录按钮宽度。 |
setLogBtnHeight | int | 设置登录按钮高度。 |
setLogBtnTextSize | int | 设置登录按钮字体大小。 |
setLogBtnBottomOffsetY | int | 设置登录按钮相对屏幕底部y轴偏移。 |
- 授权页隐私栏
方法 | 参数类型 | 说明 |
---|---|---|
setAppPrivacyOne | String,String | 设置开发者隐私条款1名称和URL(名称,url) |
setAppPrivacyTwo | String,String | 设置开发者隐私条款2名称和URL(名称,url) |
setAppPrivacyColor | int,int | 设置隐私条款名称颜色(基础文字颜色,协议文字颜色) |
setPrivacyOffsetY | int | 设置隐私条款相对于授权页面底部下边缘y偏移 |
setCheckedImgPath | String | 设置复选框选中时图片 |
setUncheckedImgPath | String | 设置复选框未选中时图片 |
setPrivacyState | boolean | 设置隐私条款默认选中状态,默认不选中。 |
setPrivacyOffsetX | int | 设置隐私条款相对于屏幕左边x轴偏移。 |
setPrivacyTextCenterGravity | boolean | 设置隐私条款文字是否居中对齐(默认左对齐)。 |
setPrivacyText | String,String | 设置隐私条款名称外的文字。如:登录即同意...... 并使用本机号码登录;参数 1 为:"登录即同意"。参数 2 为:"并使用本机号码登录"。 |
setPrivacyTextSize | int | 设置隐私条款文字字体大小(单位:sp)。 |
setPrivacyTopOffsetY | int | 设置隐私条款相对导航栏下端y轴偏移。 |
setPrivacyCheckboxHidden | boolean | 设置隐私条款checkbox是否隐藏。 |
setPrivacyCheckboxSize | int | 设置隐私条款checkbox尺寸。 |
setPrivacyWithBookTitleMark | boolean | 设置隐私条款运营商协议名是否加书名号。 |
setPrivacyCheckboxInCenter | boolean | 设置隐私条款checkbox是否相对协议文字纵向居中。默认居顶。 |
setPrivacyTextWidth | int | 设置隐私条款文字栏宽度,单位dp。 |
enableHintToast | boolean Toast | 协议栏checkbox未选中时,点击登录按钮是否弹出toast提示用户勾选协议,默认不弹。支持自定义Toast。 |
-
授权页隐私协议web页面
方法 参数类型 说明 setPrivacyNavColor int 设置协议展示web页面导航栏背景颜色。 setPrivacyNavTitleTextColor int 设置协议展示web页面导航栏标题文字颜色。 setPrivacyNavTitleTextSize int 设置协议展示web页面导航栏标题文字大小(sp)。 setPrivacyNavReturnBtn View 设置协议展示web页面导航栏返回按钮图标。 setAppPrivacyNavTitle1 String 设置自定义协议1对应web页面导航栏文字内容。 setAppPrivacyNavTitle2 String 设置自定义协议2对应web页面导航栏文字内容。 setPrivacyStatusBarColorWithNav boolean 设置授权协议web页面状态栏与导航栏同色。仅在android 5.0以上设备生效。 setPrivacyStatusBarDarkMode boolean 设置授权协议web页面状态栏暗色模式。仅在android 6.0以上设备生效。 setPrivacyStatusBarTransparent boolean 设置授权协议web页面状态栏是否透明。仅在android 4.4以上设备生效。 setPrivacyStatusBarHidden boolean 设置授权协议web页面状态栏是否隐藏。 setPrivacyVirtualButtonTransparent boolean 设置授权协议web页面虚拟按键栏背景是否透明。 -
授权页slogan
方法 | 参数类型 | 说明 |
---|---|---|
setSloganTextColor | int | 设置移动slogan文字颜色 |
setSloganOffsetY | int | 设置slogan相对于标题栏下边缘y偏移 |
setSloganOffsetX | int | 设置slogan相对于屏幕左边x轴偏移。 |
setSloganBottomOffsetY | int | 设置slogan相对于屏幕底部下边缘y轴偏移。 |
setSloganTextSize | int | 设置slogan字体大小。 |
setSloganHidden | int | 设置slogan是否隐藏。 |
- 自定义loading view
方法 | 参数类型 | 说明 |
---|---|---|
setLoadingView | View,Animation | 设置login过程中展示的loading view以及动画效果。 |
- 授权页动画
方法 | 参数类型 | 说明 |
---|---|---|
setNeedStartAnim | boolean | 设置拉起授权页时是否需要显示默认动画。默认展示。 |
setNeedCloseAnim | boolean | 设置关闭授权页时是否需要显示默认动画。默认展示。 |
- 开发者自定义控件
方法 | 参数类型 | 说明 |
---|---|---|
addCustomView | 见以上方法定义 | 在授权页空白处添加自定义控件以及点击监听 |
addNavControlView | 见以上方法定义 | 在授权页面顶部导航栏添加自定义控件以及点击监听 |
开始支持的版本 2.3.8
-
setDialogTheme(int dialogWidth, int dialogHeight, int offsetX, int offsetY, boolean isBottom)
- 接口说明:
- 设置授权页为弹窗模式
-
参数说明:
- dialogWidth:窗口宽度,单位dp
- dialogHeight:窗口高度,单位dp
- offsetX:窗口相对屏幕中心的x轴偏移量,单位dp
- offsetY:窗口相对屏幕中心的y轴偏移量,单位dp
- isBottom: 窗口是否居屏幕底部。设置后offsetY将失效
-
调用示例:
- 接口说明:
new UpVerifyUiBuilder().setDialogTheme(410, 390, 0, 0, false)
AndroidManifest.xml
<activity android:name="cn.jiguang.verifysdk.CtLoginActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/ActivityDialogStyle" <!-- 设置自定义style -->
android:screenOrientation="unspecified"
android:launchMode="singleTop">
</activity>
res/values/styles.xml
<style name="ActivityDialogStyle">
<!--隐藏action bar和title bar-->
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<!--背景透明-->
<item name="android:windowIsTranslucent">true</item>
<!--dialog圆角-->
<item name="android:windowBackground">@drawable/dialog_bg</item>
</style>
res/drawable/dialog_bg.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
</shape>
-
setCustomUIWithBuilder(UpVerifyUiBuilder uiBuilderPortrait,UpVerifyUiBuilder uiBuilderLandscape)
- 接口说明:
- 修改授权页面主题,支持传入竖屏和横屏两套config。sdk会根据当前横竖屏状态动态切换。需在每次调用 loginAuth 接口之前调用。
- 参数说明:
- uiConfigPortrait:竖屏config
-
uiConfigLandscape:横屏config
-
调用示例:
UpVerifyUiBuilder portrait = new UpVerifyUiBuilder(); portrait.setAuthBGImgPath("main_bg") .setNavColor(0xff0086d0) .setNavText("登录") .setNavTextColor(0xffffffff) .setNavReturnImgPath("umcsdk_return_bg") .setLogoWidth(70) .setLogoHeight(70) .setLogoHidden(false) .setNumberColor(0xff333333) .setLogBtnText("本机号码一键登录") .setLogBtnTextColor(0xffffffff) .setLogBtnImgPath("umcsdk_login_btn_bg") .setAppPrivacyOne("应用自定义服务条款一", "https://www.jiguang.cn/about") .setAppPrivacyTwo("应用自定义服务条款二", "https://www.jiguang.cn/about") .setAppPrivacyColor(0xff666666, 0xff0085d0) .setUncheckedImgPath("umcsdk_uncheck_image") .setCheckedImgPath("umcsdk_check_image") .setSloganTextColor(0xff999999) .setLogoOffsetY(50) .setLogoImgPath("logo_cm") .setNumFieldOffsetY(190) .setSloganOffsetY(220) .setLogBtnOffsetY(254) .setNumberSize(18) .setPrivacyState(false) .setNavTransparent(false); UpVerifyUiBuilder landscape = new UpVerifyUiBuilder(); landscape.setAuthBGImgPath("main_bg") .setNavColor(0xff0086d0) .setNavText("登录") .setNavTextColor(0xffffffff) .setNavReturnImgPath("umcsdk_return_bg") .setLogoWidth(70) .setLogoHeight(70) .setLogoHidden(false) .setNumberColor(0xff333333) .setLogBtnText("本机号码一键登录") .setLogBtnTextColor(0xffffffff) .setLogBtnImgPath("umcsdk_login_btn_bg") .setAppPrivacyOne("应用自定义服务条款一", "https://www.jiguang.cn/about") .setAppPrivacyTwo("应用自定义服务条款二", "https://www.jiguang.cn/about") .setAppPrivacyColor(0xff666666, 0xff0085d0) .setUncheckedImgPath("umcsdk_uncheck_image") .setCheckedImgPath("umcsdk_check_image") .setSloganTextColor(0xff999999) .setLogoOffsetY(30) .setLogoImgPath("logo_cm") .setNumFieldOffsetY(150) .setSloganOffsetY(185) .setLogBtnOffsetY(210) .setPrivacyOffsetY(30); UpVerificationInterface.setCustomUIWithBuilder(portrait, landscape);
同时需要在manifest对应授权页Activity:LoginAuthActivity、CtLoginActivity中配置android:configChanges="orientation|keyboardHidden|screenSize"
属性
targetSDKVersion > 26的应用,在8.0系统上如果指定了授权页方向如:"android:screenOrientation="portrait"", 会报错Only fullscreen opaque activities can request orientation
解决方法:
- 将授权页"android:screenOrientation"设置为"portrait"、"landscape"之外的值。
- targetSDKVersion 改成 <= 26
code | message | 备注 |
---|---|---|
1000 | verify consistent | 手机号验证一致 |
1001 | verify not consistent | 手机号验证不一致 |
1002 | unknown result | 未知结果 |
1003 | token expired | token失效 |
1004 | sdk verify has been closed | SDK发起认证未开启 |
1005 | 包名和 AppKey 不匹配 | 请检查客户端配置的包名与官网对应 Appkey 应用下配置的包名是否一致 |
1006 | frequency of verifying single number is beyond the maximum limit | 同一号码自然日内认证消耗超过限制 |
1007 | beyond daily frequency limit | appKey自然日认证消耗超过限制 |
1008 | AppKey 非法 | 请到官网检查此应用信息中的 appkey,确认无误 |
1009 | 请到官网检查此应用的应用详情;更新应用中集成的极光SDK至最新 | |
1010 | verify interval is less than the minimum limit | 同一号码连续两次提交认证间隔过短 |
1011 | appSign invalid | 应用签名错误,检查签名与Portal设置的是否一致 |
2000 | 内容为token | 获取token成功 |
2001 | fetch token failed | 获取token失败 |
2002 | init failed | SDK初始化失败 |
2003 | network not reachable | 网络连接不通 |
2004 | get uid failed | 极光服务注册失败 |
2005 | request timeout | 请求超时 |
2006 | fetch config failed | 获取应用配置失败 |
2007 | 内容为异常信息 | 验证遇到代码异常 |
2008 | Token requesting, please try again later | 正在获取token中,稍后再试 |
2009 | verifying, please try again later | 正在认证中,稍后再试 |
2010 | don't have READ_PHONE_STATE permission | 未开启读取手机状态权限 |
2011 | 内容为异常信息 | 获取配置时代码异常 |
2012 | 内容为异常信息 | 获取token时代码异常 |
2013 | 内容为具体错误原因 | 网络发生异常 |
2014 | internal error while requesting token | 请求token时发生内部错误 |
2016 | network type not supported | 当前网络环境不支持认证 |
2017 | carrier config invalid | 运营商配置错误 |
4001 | parameter invalid | 参数错误。请检查参数,比如是否手机号格式不对 |
4014 | appkey is blocked | 功能被禁用 |
4018 | 没有足够的余额 | |
4031 | 不是认证SDK用户 | |
4032 | 获取不到用户配置 | |
4033 | appkey is not support login | 不是一键登录用户 |
5000 | bad server | 服务器未知错误 |
6000 | 内容为token | 获取loginToken成功 |
6001 | fetch loginToken failed | 获取loginToken失败 |
6002 | fetch loginToken canceled | 用户取消获取loginToken |
6003 | UI 资源加载异常 | 未正常添加sdk所需的资源文件 |
6004 | authorization requesting, please try again later | 正在登录中,稍后再试 |
6006 | prelogin scrip expired. | 预取号结果超时,需要重新预取号 |
7000 | preLogin success | sdk 预取号成功 |
7001 | preLogin failed | sdk 预取号失败 |
7002 | preLogin requesting, please try again later | 正在预取号中,稍后再试 |
8000 | init success | 初始化成功 |
8004 | init failed | 初始化失败,详见日志 |
8005 | init timeout | 初始化超时,稍后再试 |
-994 | 网络连接超时 | |
-996 | 网络连接断开 | |
-997 | 注册失败/登录失败 | (一般是由于没有网络造成的)如果确保设备网络正常,还是一直遇到此问题,则还有另外一个原因:JPush 服务器端拒绝注册。而这个的原因一般是:你当前 App 的 Android 包名以及 AppKey,与你在 Portal 上注册的应用的 Android 包名与 AppKey 不相同。 |