Skip to content

upyun/Android-QuickLogin

Repository files navigation

Android 一键登录 SDK

------------------ ##SDK 概述
  • 此 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>
  • 包名签名设置 包名需要与控制后台申请包名一致,签名通过签名工具获取后上传控制后台。
  • Demo APK 下载演示

混淆配置

  • 请下载 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.** { *; }

SDK接口说明

  • UpVerificationInterface,包含SDK所有接口

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);
                }
            });

SDK初始化(新增回调参数)

接口定义

  • 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);
                }
            });

SDK初始化

接口定义

  • UpVerificationInterface.init(Context context)
    • 接口说明:
      • 初始化接口。建议在Application的onCreate中调用
    • 参数说明:
      • context:android的上下文
    • 调用示例:
    UpVerificationInterface.init(this);

获取sdk初始化是否成功标识

接口的定义

  • UpVerificationInterface.isInitSuccess()
    • 接口说明:
      • 获取sdk是否整体初始化成功的标识
    • 返回结果
      • boolean : true - 成功,false - 失败
    • 调用示例:
    boolean isSuccess = UpVerificationInterface.isInitSuccess();

SDK设置debug模式

接口定义

  • UpVerificationInterface.setDebugMode(boolean enable)
    • 接口说明:
      • 设置是否开启debug模式。true则会打印更多的日志信息。建议在init接口之前调用。
    • 参数说明:
      • enable:debug开关
    • 调用示例:
    UpVerificationInterface.setDebugMode(true);

SDK判断网络环境是否支持

接口定义

  • UpVerificationInterface.checkVerifyEnable(Context context)
    • 接口说明:
      • 判断当前的手机网络环境是否可以使用认证。
    • 参数说明:
      • context:android的上下文
    • 返回说明:
      • 返回true代表可以使用;返回false建议使用其他验证方式。
    • 调用示例:
    boolean verifyEnable = UpVerificationInterface.checkVerifyEnable(this);
        if(!verifyEnable){
            Log.d(TAG,"当前网络环境不支持认证");
            return;
        }

SDK一键登录预取号

  • 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 );
            }
        });

SDK清除预取号缓存

接口定义

  • UpVerificationInterface.clearPreLoginCache(){
    • 接口说明:
      • 清除sdk当前预取号结果缓存。
    • 调用示例:
        UpVerificationInterface.clearPreLoginCache();

SDK请求授权一键登录

  • 一键登录需要依赖预取号结果,如果没有预取号,一键登录时会自动预取号。
  • 建议拉起授权页前,比如在开屏页或者业务入口页预先调用此接口进行预取号,可以提升授权页拉起速度,优化体验。
  • 一键登录请求成功后,不要频繁重复调用。运营商会限制单位时间内请求次数。
  • 不要在一键登录回调中重复调用预取号或者拉起授权页接口。

接口的定义

  • 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:内容描述。
    • 调用示例:
    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. 一键登录按钮(可用状态下)点击事件

SDK请求授权一键登录

接口的定义

  • 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来获取手机号码

SDK请求授权一键登录

接口的定义

  • 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);
                }
              }
          });

SDK关闭授权页面

接口的定义

  • 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();

SDK自定义授权页面UI样式

接口的定义

  • 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);

SDK授权页面添加自定义控件

接口的定义

  • 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();
                        }
                    });                                    

SDK授权页面顶部导航栏添加自定义控件

接口的定义

  • addNavControlView(View view, UpVerifyUIClickCallback callback)

    • 接口说明:
      • 在授权页中顶部导航栏添加自定义控件
    • 参数说明:
      • view:开发者传入自定义的控件,开发者需要提前设置好控件的布局属性,SDK只支持RelativeLayout布局
      • callback: 自定义控件的点击回调
    • 回调说明:
      • onClicked(Context context, View view)
        • context:android的上下文
        • 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();
                        }
                    });

UpVerifyUiBuilder 配置元素说明

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轴偏移。
  • 授权页隐私栏
UpVerifyUiBuilder
方法 参数类型 说明
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)

窗口模式样式设置

在manifest中为授权页activity设置窗口样式style

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>

style中增加具体弹窗样式

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="https://schemas.android.com/apk/res/android">
    <corners android:radius="5dp"/>
</shape>

授权页横竖屏UI动态切换

接口定义

  • 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

解决方法:

  1. 将授权页"android:screenOrientation"设置为"portrait"、"landscape"之外的值。
  2. 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 不相同。
  • SDK接口说明
  • SDK初始化(支持超时时间配置、回调参数)
  • SDK初始化(新增回调参数)
  • SDK初始化
  • 获取sdk初始化是否成功标识
  • SDK设置debug模式
  • SDK判断网络环境是否支持
  • SDK获取号码认证token(新)
  • SDK获取号码认证token(旧)
  • SDK发起号码认证
  • SDK一键登录预取号
  • SDK清除预取号缓存
  • SDK请求授权一键登录(新)
  • SDK请求授权一键登录(旧)
  • SDK请求授权一键登录(旧)
  • SDK关闭授权页面
  • SDK自定义授权页面UI样式
  • SDK授权页面添加自定义控件
  • SDK授权页面顶部导航栏添加自定义控件
  • UpVerifyUiBuilderUpVerifyUiBuilder配置元素说明
  • 授权页弹窗模式
  • 授权页横竖屏UI动态切换
  • 错误码
  • About

    No description, website, or topics provided.

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages