uni-app Demo体验

如果您的项目使用了uni-app开发框架开发Android或者iOS应用,期望实现一键登录或本机号码校验功能,可通过本章节了解如何使用uni-app插件体验号码认证功能。更多SDK接入详情,请参见一键登录 > uni-app接入本机号码校验 > uni-app接入

背景信息

uni-app原生语言插件

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

重要

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

Demo体验

本文以uni-app开发Android应用为例,讲解Demo体验的完整配置过程。

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

  2. 点击界面右侧“下载示例项目ZIP”,下载Demo代码。

    说明

    本插件免费,支持离线打包。

  3. 使用HBuilder打开Demo项目。

  4. 制作“自定义调试基座”。记录下Android包名,后面步骤需要使用。

    说明

    本插件使用原生语言开发,需要打包自定义基座,制作详情请参见什么是自定义基座

  5. 点击HBuilder顶部工具栏运行按钮image..png ,弹出菜单选择运行到Android App基座,弹出面板,选择使用自定义基座运行,点击运行按钮。image..png

  6. 手机上打开编译后的应用。

    Screenshot_20230519_115641..png

  7. 创建专属于当前应用的号码认证方案,配置详情请参见号码认证方案管理

    说明
    • 操作系统:请选择Android

    • 包名:请填入创建自定义基座设置的包名称。

    • 包签名:请先下载并安装Android APP签名获取工具,选择到当前demo应用,获取包签名。

  8. 复制当前认证方案中的密钥,替换掉Demo中App.vuesdkInfo变量,保存后HBuilder会进行差量打包。

示例代码

引入插件&设置密钥

const aLiSDKModule = uni.requireNativePlugin('AliCloud-NirvanaPns');
aLiSDKModule.setAuthSDKInfo("从阿里云控制台获取的密钥");
说明

密钥获取方法,请参见setAuthSDKInfo的密钥如何获取?

一键登录功能

aLiSDKModule.getLoginToken(
  5000,
  config,
  (tokenResult) => {
    uni.hideLoading();
    console.log(JSON.stringify(tokenResult));
    if ("600001" == tokenResult.resultCode) {
      console.log("授权页拉起成功");

      // 设置是否选中复选框
      aLiSDKModule.setCheckboxIsChecked({
        check: false,
      });
    } else if ("600000" == tokenResult.resultCode) {
      console.log(
        "获取Token成功,接下来拿着结果里面的Token去服务端换取手机号码,SDK服务到此结束"
      );
      //手动关闭授权页
      aLiSDKModule.quitLoginPage();
    } else {
      //手动关闭授权页
      aLiSDKModule.quitLoginPage();
    }
  },
  (clickResult) => {
    console.log(JSON.stringify(clickResult));
    switch (clickResult.resultCode) {
      case "700000":
        console.log("用户点击返回按钮");
        break;
      case "700001":
        console.log("用户切换其他登录方式");
        break;
      case "700002":
        console.log("用户点击登录按钮");
        if (!clickResult.result.isChecked) {
          //Toast样式可参考:https://www.html5plus.org/doc/zh_cn/nativeui.html#plus.nativeUI.toast
          plus.nativeUI.toast("请同意服务条款(ps:这个Toast需手动添加)");
        }
        break;
      case "700003":
        console.log("用户点击checkBox");
        break;
      case "700004":
        console.log("用户点击协议");
        break;
    }
  },
  (customUiResult) => {
    console.log("点击了自定义控件 " + JSON.stringify(customUiResult));
    if ("close" == customUiResult.widgetId) {
      //点击了自定义的关闭授权页按钮
      aLiSDKModule.quitLoginPage();
    } else {
      plus.nativeUI.toast(
        "点击了自定义按钮,widgetId:" + customUiResult.widgetId
      );
    }
  }
);

本机号码校验功能

aLiSDKModule.getVerifyToken(5000, (result) => {
  uni.hideLoading();
  console.log(JSON.stringify(result));
  let msg = "";
  if ("600000" == result.resultCode) {
    msg =
      "获取本机号码校验token成功,接下面需要拿手机号和token去服务端进行校验,SDK服务到此结束";
  } else {
    msg = "获取本机号码校验Token失败," + result.msg;
  }
  // 控制台输出和屏幕提示
  console.log(msg);
  uni.showToast({
    icon: "none",
    title: msg,
    duration: 3000,
  });
});