uni-app接入

本文为您详细介绍uni-app开发框架集成号码认证服务原生语言插件的方法及本机号码校验相关方法的说明。

说明

在使用过程中如有疑问,可以提交工单联系阿里云技术工程师处理。

背景信息

uni-app原生语言插件

阿里云号码认证SDK插件是基于HBuilder提供的uni-app原生插件扩展能力开发出的认证插件,开发者可以轻松将阿里云号码认证能力集成到自己的项目中,在JS层实现相关功能。

重要

本插件使用原生语言开发,仅支持在uni-app开发框架开发的AndroidiOS应用中使用,无法在其他各类小程序中使用。

在项目中引入插件

  1. 创建uni-app项目。

    1. 如果您还未创建uni-app项目,可参考DCloud官方文档通过HBuilder可视化界面创建项目

    2. 如果您已有项目,可直接进入下一步。

  2. 下载插件。

    1. 访问插件地址:阿里云号码认证SDK,进入插件详情页。

    2. 点击界面右侧的下载for离线打包下载插件。

  3. 项目中引入插件。

    1. 在项目的根目录新建nativeplugins文件夹,将下载的AliCloud-NirvanaPns_1.1.0.zip解压后引入nativeplugins文件夹。37

    2. 打开根目录manifest.json文件,单击App原生插件配置 > 选择本地插件38

    3. 本地插件选择对话框,勾选阿里云号码认证SDKimage

    4. 单击确定即可引入。

创建方案号

您导入项目或调用API接口时,会用到方案Code等参数信息,请先在号码认证产品控制台创建认证方案,获取方案Code等参数信息。

交互流程详解

完整的功能交互流程请参见本机号码校验交互流程

方法说明

引入方式

vue或者nvue文件中,通过使用uni.requireNativePlugin方法引入原生插件。

调用示例

const aLiSDKModule = uni.requireNativePlugin('AliCloud-NirvanaPns');

setAuthSDKInfo(设置密钥)

方法说明:必调方法。

使用一键登录前,需要先设置密钥,并确保密钥跟Bundle Id或包名匹配。

参数说明: setAuthSDKInfo(info)

参数

类型

说明

info

String

阿里云号码认证控制台生成的密钥

调用示例

aLiSDKModule.setAuthSDKInfo("从阿里云控制台获取的密钥");

accelerateVerify(加速号码校验)

加速本机号码校验Token的获取。

  • 建议在调用获取本机号码校验Token方法前,提前一段时间调用该加速方法,中间最好有2~3秒的缓冲(因为加速方法需要1~3秒的时间取得临时凭证)。

  • 尽量不要多次调用。

  • 打开App就获取本机号码校验Token的场景不需要调用此方法。

参数说明:accelerateVerify(timeout, callback)

参数

类型

说明

timeout

Number

设置接口超时时间,单位:毫秒。

callback(args)

Function

回调函数。回调函数入参结构如下:

  • resultCode: 600000表示接口调用成功。

  • msg: 相关提示信息。

调用示例

aLiSDKModule.accelerateVerify(5000, (result) => {
  console.log(JSON.stringify(result));
  if ("600000" == result.resultCode) {
    console.log("加速获取本机号码校验Token成功");
  } else {
    console.log("加速获取本机号码校验Token失败," + result.msg);
  }
});

getVerifyToken(获取本机号码校验Token)

获取本机号码校验Token。

参数说明:getVerifyToken(timeout, callback)

参数

类型

说明

timeout

Number

设置接口超时时间,单位:毫秒。

callback(args)

Function

回调函数。回调函数入参结构如下:

  • resultCode:600000表示接口调用成功。

  • msg:相关提示信息。

  • token:最终进行号码校验的Token,只有在resultCode值为600000的时候该字段才会有值。

调用示例

aLiSDKModule.getVerifyToken(5000, (result) => {
  if ("600000" == result.resultCode) {
    console.log(
      "获取本机号码校验token成功,接下面需要拿手机号和token去服务端进行校验,SDK服务到此结束"
    );
  }
});

getVersion(获取号码认证SDK版本号)

参数说明:getVersion(callback)

参数

类型

说明

callback(version)

Function

回调函数。回调函数入参结构如下:

  • version: 号码认证SDK版本。

调用示例

aLiSDKModule.getVersion((version) => {
  console.log("当前SDK版版本号为:" + version);
});

checkEnvAvailable(环境检查)

检查当前环境是否支持一键登录/本机号码校验。

参数说明:checkEnvAvailable(authType, callback)

参数

类型

说明

authType

Number

检查类型:

  • 1: 检查号码认证环境。

  • 2: 检查一键登录环境。

callback(args)

Function

回调函数。回调函数入参结构如下:

  • resultCode: 600000表示接口调用成功,环境支持一键登录/本机号码校验。

  • msg: 相关提示信息。

调用示例

aLiSDKModule.checkEnvAvailable(2, (result) => {
  if ("600000" == result.resultCode) {
    uni.navigateTo({
      animationDuration: 300,
      url: "../login/login",
    });
  } else {
    console.log("当前环境不支持一键登录,result = ", JSON.stringify(result));
    uni.showToast({
      icon: "none",
      title: result.msg,
      duration: 3000,
    });
  }
});

getCurrentCarrierName(获取默认上网卡运营商)

参数说明:getCurrentCarrierName(callback)

返回值

类型

说明

callback(carrierName)

Function

回调函数。回调函数入参结构如下:

  • carrierName: 当前运营商。

    中国移动:CMCC

    中国联通:CUCC

    中国电信:CTCC

调用示例

aLiSDKModule.getCurrentCarrierName((carrierName) => {
  console.log("当前运营商为:" + carrierName);
});

setCheckboxIsChecked设置勾选框是否自动勾选

参数说明

参数

类型

说明

isChecked

Number

是否自动勾选。

  • true:勾选

  • false:不勾选

调用示例

aLiSDKModule.setCheckboxIsChecked(true)

closePrivactAlertView(关闭二次授权弹窗)

调用示例

aLiSDKModule.closePrivactAlertView()