uniapp 如何对接极光一键登录+配置极光页面样式 IOS Android

867 阅读10分钟

简易教程。

快捷文档:github.com/jpush/jveri…

安卓配置

初始化

在uniapp里首先购买并且勾选 极光插件,然后 APP.vue 里初始化极光插件。

 onLaunch(options){
    const jv = uni.requireNativePlugin("JG-JVerification");
    jv.setDebugMode(true);
    jv.init(
      {
        timeout: 7000,
        isProduction: false,
      },
      (result) => {
        console.log(result);
        let code = result.code;
        let desc = result.content;
        console.log(desc);
      }
    );
}

使用

进入你唤起一键登录页面,进入页面首先进行token的获取和状态的抓取。

还是页面初始化的时候我们先校验。

onLoad(){
 // #ifdef APP-PLUS
    this.checkJLoginEnable((isJv) => {
      //检查是否可用
      if (isJv.enable) {
        jv.addEventListener((res) => {})
        jv.getToken(7000, (result) => {
          // let code = result.code;
          // let token = result.content;
          // let operator = result.operator;
          // console.log('获取token',code, token, operator);
        })
      }
    })

    // #endif

}

定义登录方法后面自行调用。

methods: {
    //检测是否可用
    checkJLoginEnable(finish) {
      jv.isInitSuccess((result) => {
        let isSucc = result.enable
        console.log('isInitSuccess', isSucc)
        jv.checkVerifyEnable((result) => {
          finish && finish(result)
        })
      })
    },
    //极光一键登录唤起
    JVLogins() {
      if (!this.privacyChecked) {
        uni.showToast({
          title: '请先同意隐私协议',
          duration: 1000,
          icon: 'none',
        })
        return
      }
      uni.showLoading({
        title: '加载中',
        mask: true,
      })
      jv.loginAuth(
        {
          autoFinish: true,
          animationFlag: true,
          timeout: 5000,
        },
        (result) => {
          // 结果监听
          let code = result.code
          if (code == 2016) {
            uni.showToast({
              title: '当前网络环境不支持一键登录',
              duration: 1000,
              icon: 'none',
            })
            return
          }
          let loginToken = result.content
          let operator = result.operator
          // 这里拿到loginToken 调用你自己的登录接口
        },
        (event) => {
          // 事件监听
          uni.hideLoading()
          let codes = event.code
          let eventDesc = event.content

          if (codes == 6002) {
            uni.showToast({
              title: '用户取消登录',
              duration: 1000,
              icon: 'none',
            })
            return
          }
        }
      )
    }
  }

更改样式

需在 loginAuth 接口之前调用,也就是登陆页面唤起之前,一般都是放在onLoad里面。

代码使用方法如下:

  jv.setCustomUIWithConfigAndroid({
          //页面微调
          setNavColor: 0xfff5ebdc, //导航背景色
          setPrivacyNavTitleTextColor: 0xff502314, //导航文字色
          setLogBtnText: '我是一键登录',
          setStatusBarColorWithNav: true,
          setPrivacyTextCenterGravity: true,
          enableHintToast: true,
          enableHintToastText: '请先同意一键登录服务条款',
          setPrivacyState: false,
          setAppPrivacyColor: [0xffa28778, 0xff502314],
        })
        

IOS配置

屎坑!IOS必须配置登录按钮图片和底部勾选协议图片,不配置就不展示。

图片元素必须放在static下。


        jv.setCustomUIWithConfigiOS({
          navColor: 0xfff5ebdc,
          navText: ['登录统一认证', 0xFF000000, 16],
          appPrivacyColor: [0xffa28778, 0xff502314],
          logBtnImgs: ["static/image/login1.png", "static/image/login1.png", "static/image/login1.png"],
          checkedImg: "static/image/checked.png",
          uncheckedImg: "static/image/unchecked.png",
          privacyCheckToastMessage: "请先同意一键登录服务条款",
          logBtnText: " ",
          logBtnConstraints: [0, -100, 295, 48],
          checkViewConstraints: [-165, 328, 20, 20], //[centerX,centerY,width,heigt]X轴越大 位置越往左  Y轴越大 位置越往下
        })

详细配置方法

Andorid

JVerifyUIConfig 配置元素说明

x 轴未设置偏移则所有组件默认横向居中

  • 设置授权页背景
  • 支持的版本 :2.1.1
  • 说明:
  • 图片会默认拉伸铺满整个屏幕,适配不同尺寸手机,建议使用 .9.png 图片来解决适配问题。
方法参数类型说明
setAuthBGImgPathString设置背景图片
  • 授权页状态栏
方法参数类型说明
setStatusBarColorWithNavboolean设置状态栏与导航栏同色。仅在 android 5.0 以上设备生效。 since 2.4.1
setStatusBarDarkModeboolean设置状态栏暗色模式。仅在 android 6.0 以上设备生效。 since 2.4.8
setStatusBarTransparentboolean设置状态栏是否透明。仅在 android 4.4 以上设备生效。 since 2.4.8
setStatusBarHiddenboolean设置状态栏是否隐藏。since 2.4.8
setVirtualButtonTransparentboolean设置虚拟按键栏背景是否透明。since 2.5.2
  • 授权页导航栏
方法参数类型说明
setNavColorint设置导航栏颜色
setNavTextString设置导航栏标题文字
setNavTextColorint设置导航栏标题文字颜色
setNavReturnImgPathString设置导航栏返回按钮图标
setNavTransparentboolean设置导航栏背景是否透明。默认不透明。since 2.3.2
setNavTextSizeint设置导航栏标题文字字体大小(单位:sp)。since 2.4.1
setNavReturnBtnHiddenboolean设置导航栏返回按钮是否隐藏。默认不隐藏。since 2.4.1
setNavReturnBtnWidthint设置导航栏返回按钮宽度。since 2.4.8
setNavReturnBtnHeightint设置导航栏返回按钮高度。since 2.4.8
setNavReturnBtnOffsetXint设置导航栏返回按钮距屏幕左侧偏移。since 2.4.8
setNavReturnBtnRightOffsetXint设置导航栏返回按钮距屏幕右侧偏移。since 2.4.8
setNavReturnBtnOffsetYint设置导航栏返回按钮距上端偏移。since 2.4.8
setNavHiddenboolean设置导航栏是否隐藏。since 2.4.8
  • 授权页logo
方法参数类型说明
setLogoWidthint设置logo宽度(单位:dp)
setLogoHeightint设置logo高度(单位:dp)
setLogoHiddenboolean隐藏logo
setLogoOffsetYint设置logo相对于标题栏下边缘y偏移
setLogoImgPathString设置logo图片
setLogoOffsetXint设置logo相对于屏幕左边x轴偏移。since 2.3.8
setLogoOffsetBottomYint设置logo相对于屏幕底部y轴偏移。since 2.4.8
  • 授权页号码栏
方法参数类型说明
setNumberColorint设置手机号码字体颜色
setNumberSizeNumber设置手机号码字体大小(单位:sp)。since 2.3.2
setNumFieldOffsetYint设置号码栏相对于标题栏下边缘y偏移
setNumFieldOffsetXint设置号码栏相对于屏幕左边x轴偏移。since 2.3.8
setNumberFieldOffsetBottomYint设置号码栏相对于屏幕底部y轴偏移。since 2.4.8
setNumberFieldWidthint设置号码栏宽度。since 2.4.8
setNumberFieldHeightint设置号码栏高度。since 2.4.8
  • 授权页登录按钮
方法参数类型说明
setLogBtnTextString设置登录按钮文字
setLogBtnTextColorint设置登录按钮文字颜色
setLogBtnImgPathString设置授权登录按钮图片
setLogBtnOffsetYint设置登录按钮相对于标题栏下边缘y偏移
setLogBtnOffsetXint设置登录按钮相对于屏幕左边x轴偏移。since 2.3.8
setLogBtnWidthint设置登录按钮宽度。since 2.3.8
setLogBtnHeightint设置登录按钮高度。since 2.3.8
setLogBtnTextSizeint设置登录按钮字体大小。since 2.3.8
setLogBtnBottomOffsetYint设置登录按钮相对屏幕底部y轴偏移。since 2.4.8
  • 授权页隐私栏
方法参数类型说明
setAppPrivacyOneString,String设置开发者隐私条款1名称和URL(名称,url) 插件 v2.0.9 开始废弃,新增 setPrivacyNameAndUrlBeanList 设置隐私协议
setAppPrivacyTwoString,String设置开发者隐私条款2名称和URL(名称,url) 插件 v2.0.9 开始废弃, 新增setPrivacyNameAndUrlBeanList 设置隐私协议
setAppPrivacyColorint,int设置隐私条款名称颜色(基础文字颜色,协议文字颜色)
setPrivacyOffsetYint设置隐私条款相对于授权页面底部下边缘y偏移
setCheckedImgPathFromJsString设置复选框选中时图片
setUncheckedImgPathFromJsString设置复选框未选中时图片
setPrivacyStateboolean设置隐私条款默认选中状态,默认不选中。since 2.3.2
setPrivacyOffsetXint设置隐私条款相对于屏幕左边x轴偏移。since 2.3.8
setPrivacyTextCenterGravityboolean设置隐私条款文字是否居中对齐(默认左对齐)。since 2.3.8
setPrivacyTextString,String,String,String设置隐私条款名称外的文字。
如:登录即同意...和...、...并使用本机号码登录
参数1为:"登录即同意"。
参数2为:"和"。
参数3为:"、"。
参数4为:"并使用本机号码登录"。
插件v2.0.9开始仅支持设置两个参数。
setPrivacyTextString,String设置隐私条款头尾文字。
如:登录即同意...和...、...并使用本机号码登录
参数1为:"登录即同意"。
参数2为:"并使用本机号码登录"。
setPrivacyTextSizeint设置隐私条款文字字体大小(单位:sp)。since 2.4.1
setPrivacyTopOffsetYint设置隐私条款相对导航栏下端y轴偏移。since 2.4.8
setPrivacyCheckboxHiddenboolean设置隐私条款checkbox是否隐藏。since 2.4.8
setPrivacyCheckboxSizeint设置隐私条款checkbox尺寸。since 2.4.8
enableHintToastbooleancheckbo没选中时是否提示用户。since 2.4.8
enableHintToastTextStringcheckbo没选中时,自定义提示用户的内容。since 2.4.8
setPrivacyWithBookTitleMarkboolean设置隐私条款运营商协议名是否加书名号。since 2.4.8
setPrivacyCheckboxInCenterboolean设置隐私条款checkbox是否相对协议文字纵向居中。默认居顶。since 2.4.8
setPrivacyTextWidthint设置隐私条款文字栏宽度。since 2.5.0
setPrivacyNameAndUrlBeanListPrivateBean 数组设置隐私条款组
  • PrivateBean since 原生 v2.9.6 插件 v2.2.5
方法参数类型说明
nameString隐私协议名称
setPrivacyMarginLString协议距离父类左边的距离
setPrivacyMarginRString协议距离父类右边的距离
setPrivacyMarginBString协议距离父类底部的距离
setPrivacyMarginTString协议距离父类头部的距离

| setIsPrivacyViewDarkMode | boolean |是否跟随系统的暗黑模式| | openPrivacyInBrowser | boolean |是否用浏览器打开协议页面|

  • PrivateBean since 原生 v2.7.3 插件 v2.0.9
方法参数类型说明
nameString隐私协议名称
urlString点击隐私协议跳转链接
beforeNameString隐私协议前部字符串
afterNameString隐私协议后部字符串
  • 授权页隐私协议web页面
方法参数类型说明
setPrivacyNavColorint设置协议展示web页面导航栏背景颜色。since 2.4.8
setPrivacyNavTitleTextColorint设置协议展示 web 页面导航栏标题文字颜色。since 2.4.8
setPrivacyNavTitleTextSizeint设置协议展示 web 页面导航栏标题文字大小(sp)。since 2.4.8
setAppPrivacyNavTitle1String设置自定义协议 1 对应 web 页面导航栏文字内容。since 2.5.2
setAppPrivacyNavTitle2String设置自定义协议 2 对应 web 页面导航栏文字内容。since 2.5.2
setPrivacyStatusBarColorWithNavboolean设置授权协议 web 页面状态栏与导航栏同色。仅在android 5.0以上设备生效。since 2.5.2
setPrivacyStatusBarDarkModeboolean设置授权协议 web 页面状态栏暗色模式。仅在android 6.0以上设备生效。since 2.5.2
setPrivacyStatusBarTransparentboolean设置授权协议 web 页面状态栏是否透明。仅在android 4.4以上设备生效。since 2.5.2
setPrivacyStatusBarHiddenboolean设置授权协议 web 页面状态栏是否隐藏。since 2.5.2
setPrivacyVirtualButtonTransparentboolean设置授权协议 web 页面虚拟按键栏背景是否透明。since 2.5.2
  • 授权页slogan
方法参数类型说明
setSloganTextColorint设置移动 slogan 文字颜色
setSloganOffsetYint设置 slogan 相对于标题栏下边缘y偏移
setSloganOffsetXint设置 slogan 相对于屏幕左边x轴偏移。since 2.3.8
setSloganBottomOffsetYint设置 slogan 相对于屏幕底部下边缘y轴偏移。since 2.3.8
setSloganTextSizeint设置 slogan 字体大小。since 2.4.8
setSloganHiddenboolean设置 slogan 是否隐藏。since 2.4.8
  • 授权页动画
方法参数类型说明
setNeedStartAnimboolean设置拉起授权页时是否需要显示默认动画。默认展示。since 2.5.2
setNeedCloseAnimboolean设置关闭授权页时是否需要显示默认动画。默认展示。since 2.5.2
  • 弹窗模式
方法参数类型说明
setDialogThemeint,int,int,int,boolean设置授权页为弹窗模式(窗口宽度,窗口高度,窗口相对屏幕中心的x轴偏移量,窗口相对屏幕中心的y轴偏移量,窗口是否居屏幕底部。设置后offsetY将失效),单位dp。注:窗口不支持导航栏
  • SDK授权页面添加自定义控件
方法参数类型说明
addCustomViewsview 数组在授权页面添加自定义控件

view 共有属性

属性参数类型说明
finishFlagboolean是否在授权页面通过自定义控件的点击finish授权页面
typeString可填 text 或 button 或 image
idString标志当前 view 的唯一 id
widthint控件宽度
heightint控件长度
marginsint,int,int,int距离屏幕 左,上,右,下的距离
alignint居中方式:9:ALIGN_PARENT_LEFT,10:ALIGN_PARENT_TOP,11:ALIGN_PARENT_RIGHT,12:ALIGN_PARENT_BOTTOM,13:CENTER_IN_PARENT,14:CENTER_HORIZONTAL,15:CENTER_VERTICAL

type = text 的属性

属性参数类型说明
textString文字内容
textColorint文字颜色
textSizeint文字大小
bgColorint背景颜色
textAlignmentint文字的对齐方式,类比系统的textAlignment 设置了textAlignment 则Gravity不生效
textViewGravityint控件的对齐方式,类比系统的Gravity 设置了textAlignment 则Gravity不生效

type = button 的属性

属性参数类型说明
textString文字内容
textColorint文字颜色
textSizeint文字大小
bgColorint背景颜色
bgImgPathString背景图片

type = image 的属性

属性参数类型说明
bgImgPathString背景图片

关于图片资源

addCustomViews 图片资源

  • HBuilder 添加图片资源(since 2.6.7

    支持在HBuilder项目的static目录中添加的图片资源如下:

    属性参数类型说明
    setAuthBGImgPathFromJsString背景图片
    setNavReturnImgPathFromJsString设置导航栏返回按钮图标
    setLogoImgPathFromJsString设置logo图片
    setLogBtnImgPathFromJsString设置授权登录按钮图片
    setLoadingViewEnableboolean设置是否在屏幕中间显示LoadingView
    jv.setCustomUIWithConfigAndroid({
    		setAuthBGImgPathFromJs:"static/bg.jpeg"
    	})
    
  • 其他的图片资源设置(适合于原生图片资源替换)

Android 请将图片放到原生 res/drawable 目录下,设置路径时直接填图片名称即可。

比如需要设置一键登录授权页背景图片,在 res/drawable 添加了 bg.png 图片后,调用

jv.setCustomUIWithConfigAndroid({
		setAuthBGImgPath:"bg"
	})