uni-app 扫码插件推荐:基于支付宝 mPaaS 扫码组件开发,支持 Android 和 iOS

一. 前言

之前说到,我的一个 uni-app 项目遭到用户吐槽:“你们这个 App 扫码的正确率太低了,尤其是安卓的设备。经常性的扫码扫不出来,就算是扫出来了,也是错误的结果!”

面对以上这个问题,我在当时的项目是使用了一个基于安卓原生 zxing 扫码插件实现的,虽然扫码效率可观,但是它也有一些弊端,比如:仅支持安卓设备不支持苹果设备样式不是特别好看反光二维码识别会有影响等等,详细了解请参考我之前写过的一篇文章:

uni-app 跳坑系列:谈谈我是如何提升安卓 App 扫码准确率的icon-default.png?t=O83Ahttps://blog.csdn.net/qq_24956515/article/details/141950635

今天这篇文章,我们继续探索一下是否还有其他更优秀的插件,可以给我们在 uni-app 的项目中提供流畅的扫码服务,之前在开发项目的过程中,确实发现一款相对更优秀的原生扫码插件,它拥有更优秀且强大的识别能力和识别速度,对弱光反光模糊二维码也具有优秀的识别能力,接下来我们来具体的看一下吧!

二. mPaaS 扫码组件

mPaaS 扫码组件是支付宝的扫码组件,目的是可以让我们的 APP 拥有像支付宝一样的扫码体验,识别速度、识别率远超开源扫码。扫码组件完全免费提供使用,但是接入时需要在阿里云上进行注册开通并将 mPaaS 扫码添加到项目工程即可

三. 创建 mPaaS 应用

1. 开通阿里云 mPaaS

登录阿里云控制台,找到移动开发平台 mPaaS进入,或直接访问以下平台进入移动开发平台 mPaaSicon-default.png?t=O83Ahttps://www.aliyun.com/product/mobilepaas/mpaas点击产品页面就可以直接进入。

之后点击 “管理控制台”,进入 “开通产品” 页面。点击 “立即开通”,就可以开通 mPaaS 产品。

以上我们就完成了第一步,开通阿里云 mPaaS,接下来我们需要进行创建应用了。

2. 创建 mPaaS 应用

开通后您需要先创建一个 mPaaS 应用,点击以下链接:创建一个 mPaaS 应用icon-default.png?t=O83Ahttps://mpaas.console.aliyun.com/#/mpaas/dashboard

简单维护好应用名称应用 LOGO就完成了开启 mPaaS 接入的第一步

将 mPaaS 接入到我的应用,1 分钟快速完成 App 代码配置

配置过程中主要包含以下四个步骤:

  1. 维护应用信息

    • 主要是应用的名称及 Logo,感觉没什么用,可以跳过省略。

  2. 下载配置文件

    • 填写配置信息,完成上传签名 APK,然后“下载配置文件”到本地,进行代码配置,需要上传签名后的 APK 文件,输入应用包名 Package Name

    • 这一步很重要,配置完成后,下载配置文件中有我们要用到的一些信息。

  • Android 代码配置:

 

  • iOS 代码配置: 

 

  1. mPaaS 基线选择:

    • 如果你是 Android 或 iOS 原生开发人员,可能你更倾向于自己开发 uni-app 原生插件,可以选择 mPaaS 某些基线功能,但如果我们仅是作为 uni-app 开发人员,不熟悉原生开发,这一步也可以进行忽略。

简单说一下 mPaaS 基线的含义,基线是指一系列功能的稳定版本的集合,是进一步开发的基础。而 mPaaS 产品是基于支付宝的某个特定版本开发的,因此对于 mPaaS 而言,基线则是所基于版本的 SDK 的集合。随着 mPaaS 产品的不断升级,会出现多个版本的基线

  1. IDE 组件配置

    • Android:主要是基于原生 AAR 方式使用 Android Studio mPaaS 插件

说明:在以上的接入步骤中,最重要的就是第 2 步,在接下来的配置插件步骤中需要我们使用配置文件中的信息。

四. 在 uni-app 中接入 mPaaS 插件

1. 下载封装好的 mPaas 原生扫码插件

下载地址:进入页面,点击下载icon-default.png?t=O83Ahttps://gitee.com/anyup/juejin-up/blob/master/plugins/Mpaas-Scan_1.2.3.zip

下载完成后,将 Zip 压缩包解压后,放入 uni-app 应用目录 nativeplugins

2. 修改插件的 config 信息

Android

这一步需要将第三部分中“创建 mPaaS 应用”中第2步已经下载的好的config配置文件信息同步到插件的package.json中,如下图所示:

iOS

和Android同样的,将下载好的的 config 文件,重命名为 meta.config,然后将这个文件放入到uni-app项目中,

具体路径为:/项目名称/nativeplugins/Mpaas-Scan/ios/meta.config

3. 在 manifest.json 中选择本地插件

如下图所示,在 manifest.json 图形化配置菜单中点击 App 原生插件配置,选择本地插件进行配置

4. 在 manifest.json 中配置插件

5. 添加权限

Android

这一步不要忘记,因为要使用安卓手机正常调用起摄像头进行扫码,需要添加对应的权限,这是必不可少的。

Android 一般需要如下的权限:

  1. CAMERA 权限:允许应用程序访问设备的摄像头,用于拍照和录像功能。

  2. WRITE_EXTERNAL_STORAGE 权限:允许应用程序写入外部存储,用于保存文件和数据。

  3. android.hardware.camera 特性:表明设备拥有相机功能,应用程序可以使用该功能进行拍照和录像等操作。

  4. android.hardware.camera.autofocus 特性:表明设备支持自动对焦功能,用于相机拍摄时自动调整焦距。

  5. FLASHLIGHT 权限:允许应用程序控制设备闪光灯,用于手电筒功能和拍照时的补光。

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.FLASHLIGHT" />

iOS

同样的,iOS 也需要添加部分权限说明,用于应用第一次使用涉及到用户隐私的功能是弹出授权确认框上显示的信息,提交App store审核时此信息必须准确描述获取此权限的原因。

如下图所示:

五. 在 uni-app 项目中使用插件

1. 使用方式

在 uni-app 项目中,我们可以进行如下使用:

  • 引入插件

  • 调用插件方法

  • 处理方法返回结果

// 引入原生插件
const mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module");
// 调用插件的 mpaasScan 方法
mpaasScanModule.mpaasScan(
  {
    // 扫码识别类型,参数可多选,qrCode、barCode,
    // 如不设置,默认识别所有扫码类型,可能有些许影响识别效率
    scanType: ["qrCode", "barCode"],
    // 是否隐藏相册,默认false不隐藏
    hideAlbum: false,
  },
  (ret) => {
    console.log(ret);
    uni.showModal({
      title: "扫码结果",
      // 返回值中,有三个参数 resp_code、resp_message、resp_result
      // resp_code 表示返回结果值,10:用户取消,11:其他错误,1000:成功
      // resp_message 表示返回结果信息
      // resp_result 表示扫码结果,只有成功才会有返回
      content: JSON.stringify(ret),
      showCancel: false,
      confirmText: "确定",
    });
  }
);

2. API 参数说明

以下是 mPaaS 官方 API 调用时提供的方法入参、返回值和 code 错误码说明

入参

名称类型必填描述
scanTypeString扫码识别类型,默认值为 ['qrCode','barCode']
hideAlbumBoolean是否隐藏相册(不允许从相册选择图片,只能从相机扫码),默认值为 false。
successFunction调用成功的回调函数
failFunction调用失败的回调函数
completeFunction调用结束的回调函数(调用成功、失败都会执行)

success 返回值

名称类型描述
codeString扫码所得数据
qrCodeString扫描二维码时返回二维码数据
barCodeString扫描条形码时返回条形码数据

错误码

error描述解决方案
10用户取消为用户正常交互流程分支,不需要进行特殊处理。
11操作失败具体原因需要查看客户端协助排查。

3. APP 演示

如果你想要体验 APP 的扫码想过,请下载我的 APP 进行体验,体验路径为:首页 -> 工具类 -> mPaaS 扫码,下载链接如下:

如需体验,可以下载 Anyup Demo 安卓版进行体验icon-default.png?t=O83Ahttps://www.pgyer.com/anyup-demo

参考文档

mPaas 官方文档icon-default.png?t=O83Ahttps://help.aliyun.com/document_detail/49549.html?spm=a2c4g.165212.0.0.66762a9dEzJcn7

uni-app 支付宝原生扫码插件icon-default.png?t=O83Ahttps://ext.dcloud.net.cn/plugin?id=2636

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896779.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vert.x,认证与授权 - HTTP基本认证

几乎所有的线上系统都离不开认证和授权&#xff0c;Vert.x auth相关组件提供了丰富(Session&#xff0c;JTW, OAuth&#xff0c;…)&#xff0c;便捷的认证和授权支持。 当前&#xff0c;使用最多是Web应用&#xff0c;所以在后续讨论中&#xff0c;都是关于Vert.x auth在Web应…

【大数据分析与挖掘模型】matlab实现——非线性回归预测模型

一、实验目的 掌握有关非线性回归的理论知识&#xff0c;通过变量代换把本来应该用非线性回归处理的问题近似转化为线性回归问题&#xff0c;并进行分析预测。 二、实验任务 对非线性回归实例进行编码计算&#xff0c;实例如下&#xff1a; 三、实验过程 1.运行非线性回归中…

【TFR-Net】基于transformer重建网络

abstract&#xff1a; 提高对数据缺失的鲁棒性已经成为多模态情感分析&#xff08;MSA&#xff09;的核心挑战之一&#xff0c;MSA旨在从语言、视觉和声学信号中判断说话者的情感。在目前的研究中&#xff0c;针对不完全模态特征的MSA&#xff0c;提出了基于平移的方法和张量正…

Unity-Editor扩展,引擎管理AudioClip,音乐音效快捷播放功能

目录 选择一个Audio 音频文件即会 关键在于三个快捷模式 播放&#xff0c; 自动播放 循环播放 根本不需要Editor扩展开发 没找到虚幻引擎的audio 的管理是怎么样的 参考&#xff1a; 本来&#xff0c;觉得没有快捷方式&#xff0c;播放很不爽 想自定义搞一个&#xff…

全面了解 NGINX 的负载均衡算法

NGINX 提供多种负载均衡方法&#xff0c;以应对不同的流量分发需求。常用的算法包括&#xff1a;最少连接、最短时间、通用哈希、随机算法和 IP 哈希。这些负载均衡算法都通过独立指令来定义&#xff0c;每种算法都有其独特的应用场景。 以下负载均衡方法&#xff08;IP 哈希除…

aws 把vpc残留删除干净

最近忘了把vpc 删干净导致又被收了冤大头钱 在删除vpc 的收发现又eni在使用&#xff0c;但是忘了是哪个资源在占用 先用命令行把占用的资源找出来停掉 使用 AWS 命令行界面&#xff08;CLI&#xff09;来查看 VPC 的使用情况 列出子网&#xff1a; aws ec2 describe-subnets …

【Java】常用方法合集

以 DemoVo 为实体 import lombok.Data; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;Data ExcelIgnoreUnannotated public class ExportPromoteUnitResult {private String id;ExcelProperty(value &qu…

数据结构6——树与二叉树

在本专栏的前五篇中&#xff0c;我们学习了顺序表、链表、栈和队列&#xff0c;他们本质上都是线性表。有线性表就存在非线性表&#xff0c;现在我们就来学习一下结构更复杂的非线性表——树。 1. 树的概念与结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&…

Go语言Gin框架的常规配置和查询数据返回json示例

文章目录 路由文件分组查询数据库并返回jsonservice层controller路由运行效果 启动多个服务 在 上一篇文章《使用Go语言的gorm框架查询数据库并分页导出到Excel实例》 中主要给大家分享了较多数据的时候如何使用go分页导出多个Excel文件并合并的实现方案&#xff0c;这一篇文章…

Linux之远程连接服务器

远程连接服务器的类型 文字接口 明文传输&#xff1a;Telnet 23、RSH等&#xff0c;目前非常少用&#xff1b; 加密传输&#xff1a;SSH为主&#xff0c;已经取代明文传输 ssh提供两个服务器功能&#xff1a;1.类似于telnet&#xff1b;2.类似于ftp的sftp-serve…

特斯拉自动驾驶出租车计划变成泡影?联想与Meta合作,推出面向PC的个人AI智能体AI Now|AI日报

文章推荐 Swarms Corporation创始人Kye Gomez实锤OpenAI多智能体Swarm抄袭其成果&#xff01;&#xff5c;AI日报 今日热点 中国海油“海能”人工智能模型正式发布 近日&#xff0c;由中国海油与中国电信、科大讯飞等企业合作打造“海能”人工智能模型正式推出。 中国海油“…

Centos7搭建minio对象存储服务器

Centos7搭建minio对象存储服务器 安装二进制程序配置服务文件 安装二进制程序 参考&#xff1a;https://segmentfault.com/q/1010000042181876 minio中国版&#xff1a;https://www.minio.org.cn/download.shtml#/linux # 下载二进制程序 wget https://dl.min.io/server/min…

鸿蒙--应用首次启动

最终效果 前言 基于自定义弹框、首选项和页面路由实现一个模拟应用首次启动的案例。需要完成以下功能: 实现四个页面,启动页、隐私协议页、广告页和应用首页。实现自定义隐私协议弹窗,点击协议可查看隐私协议具体内容。页面间的路由跳转。相关概念 首选项:首选项为应用提供…

软件工程:图书管理系统甘特图

1 实验目的 熟悉GanttProject 软件环境&#xff0c;能够使用GanttProject绘制甘特图,进行项目管理与规划。 2 实验内容 为小型图书管理系统项目的实施计划绘制甘特图。 小型图书管理系统项目包含登录、浏览、管理读者、管理图书资料、管理书目、登记借书、登记还书、预定图书、…

Snort浅析

Snort简介 Snort是免费开源的IDS/IPS&#xff08;入侵检测/防御系统&#xff09;系统&#xff0c;于1998年开发&#xff0c;旨在检测和响应网络中的可疑活动。包含流量/协议分析、内容匹配等功能&#xff0c;并可用预定义规则检测和防止各种攻击。官方网站&#xff1a;https:/…

出口摩洛哥提示 | 燃气器具和设备,2024年12月20日起需要标识Cmim Mark

Cmim Mark 为了证明产品符合摩洛哥的技术法规及标准&#xff0c;指导消费者正确选购&#xff0c;并协助政府有效管理市场&#xff0c;所有依据第24-09号法律规定的产品&#xff0c;必须加贴清晰的Cmim Mark&#xff0c;方可顺利进入摩洛哥市场。 根据摩洛哥官方公报发布的关于…

K歌与露营最搭配,AISON爱畅K歌音箱让露营更有趣

据市场调研数据显示&#xff0c;中国露营经济核心市场规模和带动市场规模均呈现逐年上升趋势&#xff0c;预计到2025年&#xff0c;中国露营经济核心市场规模将达到2483.2亿元。同时&#xff0c;《2024小红书搜索推广白皮书》显示&#xff0c;城市出行、音乐、旅游和户外等娱乐…

redis的配置文件redis.conf解析

我的后端学习大纲 我的Redis学习大纲 1.1.Redis的配置文件&#xff1a; 1.Redis的配置文件名称是&#xff1a;redis.conf 2.在vim这个配置文件的时候&#xff0c;默认是不显示行号的&#xff0c;可以编辑下面这个文件&#xff0c;末尾加上set nu&#xff0c;就会显示行号: 1.…

STM32应用详解(5)USART串口初始化

文章目录 一、USART初始化二、代码说明1.原理图2.main函数3.USART串口初始化函数4.代码整体结构 三、USART串口初始化总结 一、USART初始化 所谓的对USART进行初始化&#xff0c;就是对USART固件库函数的调用&#xff0c;来完成串口(USART)的设置&#xff0c;比如设置波特率、…

Docker 搭建mysql

拉取mysql镜像 docker pull mysql # 拉取镜像 [rooteason ~]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql 72a69066d2fe: Pull complete 93619dbc5b36: Pull complete 99da31dd6142: Pull complete 626033c43d70: Pull complete 37d…