quickpass_flutter_plugin

号码认证Flutter插件

集成

在pubspec.yaml中添加

dependencies:
  quickpass_flutter_plugin: ^xxx稳定版

配置依赖

在flutter工程对应的android/app/build.gradle 文件的android域中添加

repositories {
        flatDir {
            dirs project(':quickpass_yidun_flutter').file('libs')
        }
    }

否则会出现aar找不到的异常

导入插件

import 'package:quickpass_yidun_flutter/quickpass_flutter_plugin.dart'

使用

创建QuickpassFlutterPlugin对象

QuickpassFlutterPlugin quickLoginPlugin = new QuickpassFlutterPlugin()

调用API接口

初始化

Future<Map<dynamic, dynamic>> init(String businessId) async

方法描述:SDK初始化

参数说明:

  • businessId:初始化用的业务id,android需要和签名绑定、ios需要和bundle id绑定

  • 返回值: Map类型,格式如下

     ["success":true/false] // 初始化是否成功
    

设置自定义UI配置项

void setUiConfig(var configMap)

方法描述:设置登录授权页面自定义UI属性

参数说明:

  • configMap:设置相关自定义配置项时的map对象,可配置自定义项Android和Ios请参看如下示例,请在工程目录下新建asserts文件夹添加两个json(在android和ios原生目录放图标)。

例:android-light-config.json

{
    "statusBarColor":-1,          // 设置状态栏颜色
    "isStatusBarDarkColor":true, // 状态栏是否启用暗色图标
    "navBackIcon": "yd_checkbox_checked",     // 导航栏返回图标
    "navBackIconWidth": 25,       // 导航栏返回图标宽度
    "navBackIconHeight": 25,      // 导航栏返回图标高度
    "isHideBackIcon":false,       // 是否隐藏返回按钮
    "navHeight":50,              // 导航栏高度
    "navBackgroundColor": -1,     // 导航栏背景颜色
    "navTitle": "一键登录/注册",   // 导航栏标题
    "navTitleSize":20,            // 导航栏标题大小
    "isNavTitleBold",true,       // 导航栏字体是否为粗体
    "navTitleColor": -16777216,   // 导航栏标题颜色
    "isHideNav": false,           // 是否隐藏导航栏

    "logoIconName": "ico_logo", // 设置应用logo图标,logoIconName:logo图标名称
    "logoWidth": 70,  // 设置应用logo宽度,单位dp
    "logoHeight": 70, // 设置应用logo高度,单位dp
    "logoTopYOffset": 50, // 设置logo顶部Y轴偏移,单位dp
    "logoBottomYOffset": 0, // 设置logo距离屏幕底部偏移,单位dp
    "logoXOffset": 0, // 设置logo水平方向的偏移,单位dp
    "isHideLogo": false, // 设置是否隐藏Logo

    "maskNumberColor": -16777216, // 设置手机掩码颜色
    "maskNumberSize": 15, // 设置手机掩码字体大小,单位sp
    "maskNumberDpSize": 0, // 设置手机掩码字体大小,单位dp
    "maskNumberTopYOffset": 150, // 设置手机掩码顶部Y轴偏移,单位dp
    "maskNumberBottomYOffset": 0, // 设置手机掩码距离屏幕底部偏移,单位dp
    "maskNumberXOffset": 0, // 设置手机掩码水平方向的偏移,单位dp

    "sloganSize": 15, // 设置认证品牌字体大小,单位sp
    "sloganDpSize": 0, // 设置认证品牌字体大小,单位dp
    "sloganColor": -16777216, // 设置认证品牌颜色
    "sloganTopYOffset": 200, // 设置认证品牌顶部Y轴偏移,单位dp
    "sloganXOffset": 0, // 设置认证品牌水平方向的偏移,单位dp
    "sloganBottomYOffset":0, // 设置认证品牌距离屏幕底部偏移,单位dp

    "loginBtnText": "同意协议并登录", // 设置登录按钮文本
    "loginBtnTextSize": 15, // 设置登录按钮文本字体大小,单位sp
    "loginBtnTextDpSize": 15, // 设置登录按钮文本字体大小,单位dp
    "loginBtnTextColor": -1, // 设置登录按钮文本颜色
    "loginBtnWidth": 300, // 设置登录按钮宽度,单位dp
    "loginBtnHeight": 45, // 设置登录按钮高度,单位dp
    "loginBtnTopYOffset": 250, // 设置登录按钮顶部Y轴偏移,单位dp
    "loginBtnBottomYOffset": 0, // 设置登录按钮距离屏幕底部偏移,单位dp
    "loginBtnXOffset": 0, // 设置登录按钮水平方向的偏移,单位dp
    "loginBtnBackgroundRes":"launch_image", // 支持按钮背景图片设置,如"launch_image"

    "privacyTextColor": -6710887, // 设置隐私栏文本颜色,不包括协议 ,如若隐私栏协议文案为:登录即同意《中国移动认证条款》且授权QuickLogin登录, 则该API对除协议‘《中国移动认证条款》’区域外的其余文本生效
    "privacyProtocolColor": -13480449, // 设置隐私栏协议颜色 。例如:登录即同意《中国移动认证条款》且授权QuickLogin登录 , 则该API仅对‘《中国移动认证条款》’文案生效
    "privacySize": 12, // 设置隐私栏区域字体大小,单位sp
    "privacyDpSize": 12, // 设置隐私栏区域字体大小,单位dp
    "privacyTopYOffset": 0, // 设置隐私栏顶部Y轴偏移,单位dp
    "privacyBottomYOffset": 50, // 设置隐私栏距离屏幕底部偏移,单位dp
    "privacyXOffset": 0, // 设置隐私栏水平方向的偏移,单位dp
    "privacyMarginRight": 1, // 设置隐私栏右侧边距,单位dp
    "privacyState": true, // 设置隐私栏协议复选框勾选状态,true勾选,false不勾选
    "isHidePrivacySmh": false,
    "isHidePrivacyCheckBox": false, // 设置是否隐藏隐私栏勾选框
    "isPrivacyTextGravityCenter": false, // 设置隐私栏文案换行后是否居中对齐,如果为true则居中对齐,否则左对齐
    "checkBoxGravity": 48, // 设置隐私栏勾选框与文本协议对齐方式,可选择顶部(Gravity.TOP),居中(Gravity.CENTER),底部(Gravity.BOTTOM)等
    "checkedImageName": "yd_checkbox_checked2", // 设置隐私栏复选框选中时的图片资源
    "unCheckedImageName": "yd_checkbox_unchecked2", // 设置隐私栏复选框未选中时的图片资源
    "privacyTextStart": "登录即同意", // 设置隐私栏声明部分起始文案 。如:隐私栏声明为"登录即同意《隐私政策》和《中国移动认证条款》且授权易盾授予本机号码",则可传入"登录即同意"
    "protocolText": "", // 设置隐私栏协议文本
    "protocolLink": "", // 设置隐私栏协议链接
    "protocol2Text": "", // 设置隐私栏协议2文本
    "protocol2Link": "", // 设置隐私栏协议2链接
    "privacyTextEnd": "", // 设置隐私栏声明部分尾部文案。如:隐私栏声明为"登录即同意《隐私政策》和《中国移动认证条款》且授权易盾授予本机号码",则可传入"且授权易盾授予本机号码"
    "protocolNavHeight": 0, // 设置协议Web页面导航栏高度
    "protocolNavTitleSize": 0, // 设置协议Web页面导航栏标题大小,单位sp
    "protocolNavTitleDpSize": 0, // 设置协议Web页面导航栏标题大小,单位dp
    "protocolNavBackIconWidth": 25, // 设置协议Web页面导航栏返回按钮宽度,单位dp
    "protocolNavBackIconHeight": 25, // 设置协议Web页面导航栏返回按钮高度,单位dp

    "protocolNavTitle": "易盾一键登录SDK服务条款", // 设置协议Web页面导航栏标题
    "protocolNavBackIcon": "yd_checkbox_checked2", // 设置协议Web页面导航栏返回图标
    "protocolNavColor": -1, // 设置协议Web页面导航栏颜色

    "backgroundImage":"", // 设置登录页面背景
    "backgroundGif": "", // 设置登录页面背景为Gif
    "backgroundVideo": "", // 设置登录页面背景为视频,参数videoPath为背景Video文件路径:(支持本地路径如:"android.resource://" + context.getPackageName() + "/" + R.raw.xxxVideo;支持网络路径如"https://xxx"(建议下载到本地后使用本地路径,网络路径由于网络环境的不可控体验不如直接加载本地视频),参数videoImage为视频播放前的背景图片(需要放置到drawable文件中,传入图片名称即可),2个参数必须都设置
    "backgroundVideoImage": "",

    "isLandscape": false, // 设置是否为横屏模式,默认竖屏
    "isDialogMode": false, // 是否开启对话框模式,true开启,false关闭
    "dialogWidth": 300, // 对话框宽度
    "dialogHeight": 500, // 对话框高度
    "dialogX": 0, // 当弹窗模式为中心模式时,弹窗X轴偏移(以屏幕中心为基准)
    "dialogY": 0, // 当弹窗模式为中心模式时,弹窗Y轴偏移(以屏幕中心为基准)
    "isBottomDialog": false, // 是否为底部对话框模式,true则为底部对话框模式,否则为中心模式
    "widgets": [ // widgets type 支持 TextView Button ImageView
      {
          "viewId": "view_title",  // 自定义组件id
          "type": "TextView",      // 自定义组件对应的Android原生类型
          "top": 10,               // 组件距离顶部的偏移
          "left": 0,               // 组件距离左侧的偏移
          "right": 10,             // 组件距离右侧的偏移
          "width": 20,             // 组件宽度
          "height": 20,            // 组件高度
          "text": "",              // 组件文案
          "font": 16,              // 组件字体
          "positionType": 1,       // 被添加组件的位置类型,1表示位于导航栏下方的body部分
          "backgroundImgPath": "ico_logo"   // 组件的背景图片路径
      },
      {
          "viewId": "view_tips",
          "type": "TextView",
          "left": 110,
          "top": 350,
          "right": 0,
          "bottom": 0,
          "width": 150,
          "height": 50,
          "clickable": false,
          "text": "--- 其他方式登录 ---",
          "font": 16,
          "textColor": "#797894"
      },
      {
          "viewId": "wx_button",
          "type": "Button",
          "text": "",
          "left": 110,
          "top": 380,
          "right": 0,
          "bottom": 0,
          "width": 32,
          "height": 32,
          "clickable": true,
          "backgroundImgPath": "weixin"
      },
      {
          "viewId": "qq_button",
          "type": "Button",
          "text": "",
          "left": 162,
          "top": 380,
          "right": 0,
          "bottom": 0,
          "width": 32,
          "height": 32,
          "clickable": true,
          "backgroundImgPath": "qq"
      },
      {
          "viewId": "wb_button",
          "type": "Button",
          "text": "",
          "left": 214,
          "top": 380,
          "right": 0,
          "bottom": 0,
          "width": 32,
          "height": 32,
          "clickable": true,
          "backgroundImgPath": "weibo"
      }
    ]
}

ios-light-config.json :

{
 "presentDirectionType": "1", // 弹出方式设置 0:右边 导航栏 1:底部 present默认效果
    "backgroundColor": "#FFFFFF", // 授权页面背景颜色设置
    "navBarHidden": false, // 导航栏隐藏
    "navBgColor": "#3478F7", // 导航栏背景颜色
    "navText": "易盾登录", // 导航栏标题
    "navTextFont": 16, // 导航栏标题字体
    "navTextColor": "#ffffff", // 导航栏标题颜色
    "navTextHidden": false, // 导航栏标题是否隐藏 默认不隐藏
    "navReturnImg": "return_bg", // 导航返回图标
    "navReturnImgLeftMargin": 0, // 可根据navReturnImgLeftMargin值调整返回按钮距离屏幕左边的距离
    "navReturnImgBottomMargin": 0, // 可根据navReturnImgBottomMargin值调整返回按钮距离屏幕底部的距离
    "navReturnImgWidth": 60, // 导航返回图标的宽度 
    "navReturnImgHeight": 60, // 导航返回图标的高度
    "logoIconName": "yidun_logo", // LOGO图片
    "logoWidth": 50, // LOGO图片宽度 
    "logoHeight": 50, // LOGO图片高度
    "logoOffsetX": 0, // LOGO图片左右偏移量 ,logoOffsetX = 0居中显示
    "logoHidden": false, // LOGO图片隐藏
    "logoOffsetTopY": 50, // LOGO图片Y偏移量, logoOffsetTopY为距离屏幕顶部的距离
    "numberColor": "#000000", // 手机号码字体颜色
    "numberOffsetX": 0, // 手机号码X偏移量, numberOffsetX = 0 居中显示
    "numberHeight": 50, // 手机号码框的高度
    "numberFont": 14, // 手机号码大小
    "numberCornerRadius": 10, // 手机号码的控件的圆角
    "numberLeftContent": "",  // 手机号码左边自定义内容
    "numberRightContent": "", // 手机号码右边自定义内容
    "numberOffsetTopY": "100", // 距离屏幕顶部的距离
    "brandColor": "#000000", // 认证服务品牌文字颜色
    "brandWidth": 100, // 认证服务品牌的宽度
    "brandHeight": 20, // 认证服务品牌的高度
    "brandFont": 15, // 认证服务品牌文字字体
    "brandOffsetX": 0, // 认证服务品牌X偏移量 ,brandOffsetX = 0居中显示
    "brandHidden": false, // 隐藏认证服务品牌
    "brandLogoOffsetMargin": 0, // 认证服务品牌x轴的偏移量
    "brandLogoWidth": 50,   // 认证服务品牌的宽度
    "brandLogoHeight": 50,  // 认证服务品牌的高度
    "brandOffsetTopY": 170, // 离屏幕顶部的距离
    "logBtnText": "确定登录", // 登录按钮文本
    "loginBtnTextSize": 15, // 登录按钮字号
    "logBtnTextColor": "#00FF99", // 登录按钮文本颜色
    "logBtnRadius": 20, // 登录按钮圆角
    "logBtnHeight": 40, // 登录按钮的高度
    "logBtnOriginLeft": 80, // 登录按钮的左边距
    "logBtnOriginRight": 80, // 登录按钮的右边距
    "logBtnUsableBGColor": "#0099FF", // 登录按钮背景颜色
    "logBtnOffsetTopY": 230, // 距离屏幕顶部的距离
    "logBtnEnableImg": "logo", // 登录按钮可用状态下的背景图片
    "logBtnHighlightedImg": "",
    "checkedImageName": "checkedImageName", // 复选框选中时图片
    "unCheckedImageName": "unCheckedImageName", // 复选框未选中时图片
    "checkboxWH": 50, // 复选框大小(只能正方形)
    "privacyState": true, // 隐私条款check框默认状态 
    "checkedHidden": true, // 隐藏复选框
    "checkBoxAlignment": 0, // 隐私条款check框 可相对协议顶对齐、中对齐、下对齐
    "checkBoxMargin": 0, // check框距离隐私条款的边距
    "appPrivacyOriginLeft": 40, // 隐藏条款距离屏幕左边的距离
    "appPrivacyOriginRight": 40, // 隐藏条款距离屏幕右边的距离
    "appPrivacyText": "登录即同意《默认》和《用户隐私协议》,《用户协议》", // 隐私的内容模板
    "appPrivacyTitleText": "中国移动认证服务条款",
    "appFPrivacyText": "用户隐私协议",
    "appFPrivacyTitleText": "用户隐私协议appFPrivacyTitleText",
    "appFPrivacyURL": "www.example.com",
    "appSPrivacyText": "用户协议",
    "appSPrivacyTitleText": "用户协议appSPrivacyTitleText",
    "appSPrivacyURL": "www.example.com",
    "appPrivacyAlignment": 0,  // 0 : 隐私条款居左显示, 1: 居中显示, 2 :居右显示
    "appPrivacyOriginLeftMargin": 60, // 隐私条款距离屏幕左边的距离
    "appPrivacyOriginBottomMargin": 60, // 隐私条款距离屏幕的距离
    "shouldHiddenPrivacyMarks": 0, // 是否隐藏"《默认》" 两边的《》,
    "privacyNavReturnImg": "back", // 用户协议界面,导航栏返回图标,默认用导航栏返回图标
    "privacyFont": 15, // 隐私条款字体的大小
    "privacyColor": "#000000", // 隐私条款名称颜色
    "protocolColor": "#3478F7", // 协议条款协议名称颜色

    "authWindowPop": 0, // 全屏模式
    "scaleW": 0.9, // 自定义窗口宽-缩放系数(屏幕宽乘以系数) 
    "scaleH": 0.5, // 自定义窗口高-缩放系数(屏幕高乘以系数) 
    "closePopImg": "back", // 居中弹窗 ,底部弹窗,
    "closePopImgWidth": 20, // 居中弹窗 ,底部弹窗,视图的关闭按钮的图片的宽度
    "closePopImgHeight": 20, // 居中弹窗,底部弹窗,视图的关闭按钮的图片的高度
    "closePopImgOriginY": -10, // 居中弹窗,底部弹窗,可调整关闭按钮距离顶部的距离
    "closePopImgOriginX": -10, // 居中弹窗,底部弹窗,可调整关闭按钮距离父视图右边的距离
    "authWindowCenterOriginY": 0, // 居中弹窗,可移动窗口中间点坐标Y
    "authWindowCenterOriginX": 0, // 居中弹窗,可移动窗口中间点坐标X
    "popCenterCornerRadius": 16, // 居中弹窗,视图的圆角 
    "popBottomCornerRadius": 10, // 底部弹窗,圆角的值,只可修改顶部左右二边的值
    "popBackgroundColor": "#0099FF", /// 弹窗模式的背景颜色
    "alpha": 0.5,
    "isOpenSwipeGesture": true, // 底部弹窗,是否开启轻扫手势,向下轻扫关闭弹窗

    "isRepeatPlay": "YES", // 是否重复播放视频
    "localVideoFileName": "video_portrait.mp4", // 视频本地名称 例如xx.mp4
    "animationDuration": 2, // 动画的时长
    "animationRepeatCount": 1000, // 动画重复的次数 -1无限重复

    "bgImage":"",  // 授权页背景颜色
    "launchImage":"",
    "faceOrientation" : 1, // 授权页面方向设置
    "loginDidDisapperfaceOrientation" : 1, /// 关闭授权页之后的旋转方向
    "modalTransitionStyle": 1, // 授权页转场动画 0 : 下推 ,1 :翻转, 2 :淡出.
    
    "statusBarStyle": 1, // 授权页状态栏的颜色 
    "widgets": [
      {
        "type": "UIButton", 
        "UIButtonType": 0, 
        "image": "weixin",
        "title": "",	
        "titleColor": "#000000",
        "titleFont": 12,
        "cornerRadius": 20,
        "action": "handleCustomEvent1",
        "frame": {"mainScreenLeftDistance":70,"mainScreenTopDistance":340,"width":40,"height":40},
        "backgroundImage":"yidun_logo"
      },
      {
        "type": "UIButton", 
        "UIButtonType": 0, 
        "image": "qq",
        "title": "",	
        "titleColor": "#FFFFFF",
        "titleFont": 12,
        "cornerRadius": 20,
        "action": "handleCustomEvent2",
        "frame": {"mainScreenCenterXWithLeftDistance":0,"mainScreenTopDistance":340,"width":40,"height":40},
        "backgroundImage": "yidun_logo"
      },
      {
        "type": "UIButton", 
        "UIButtonType": 0, 
        "image": "weibo",
        "title": "",	
        "titleColor": "#FFFFFF",
        "titleFont": 12,
        "cornerRadius": 20,
        "action": "handleCustomEvent3",
        "frame": {"mainScreenRightDistance":70,"mainScreenTopDistance":340,"width":40,"height":40},
        "backgroundImage": "yidun_logo"
      },
      {
        "type": "UILabel",
        "textColor": "#000000",
        "font": 15,
        "action": "handleCustomLabel",
        "text": "其他登录方式",
        "textAlignment": 1,
        "frame": {"mainScreenCenterXWithLeftDistance":0,"mainScreenTopDistance":280,"width":200,"height":40}
      }
    ]
}

预取号

Future<Map<dynamic, dynamic>> preFetchNumber() async

方法描述:一键登录预取号,预取号成功后可调用取号接口

参数说明:

  • 返回值: Map类型,格式如下
[
	"success":true/false, // 预取号是否成功
	"token", token,       // 此次预取号的token
	"errorMsg",errorMsg   // 当预取号失败时的错误信息,成功时无此字段
]

取号

Future<Map<dynamic, dynamic>> onePassLogin() async

方法描述:一键登录拉取授权页接口,当用户点击授权页面上的登录按钮时将会进行取号操作

参数说明:

  • 返回值: Map类型,格式如下
[
	"success":true/false,       // 取号是否成功
	"accessToken":accessToken,  // 取号成功时返回的运营商授权码 ,失败时无此字段
	"msg",errorMsg              // 当取号失败时的错误信息,成功时无此字段
]

关闭授权页

void closeLoginAuthView()

Libraries

quickpass_flutter_plugin