[uniapp] 实现扫码功能,含APP、h5、小程序

news/2025/2/21 4:57:35/

 🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~

💟 作    者:码喽的自我修养🥰
📝 专    栏:uniapp与微信小程序 🎉

🌈 创作不易,如果能帮助到带大家,欢迎 收藏+关注  💕

​ 🌈🌈文章目录  

场景描述

app微信小程序-原生扫码功能-toc" style="margin-left:40px;">APP、微信小程序如何实现 (原生扫码功能)

h5扫码功能插件-toc" style="margin-left:40px;">h5如何实现(扫码功能插件)

步骤1.导入插件(两种方式,选其一)

步骤2.新建页面 scan-qrcode,作为扫码页面。

步骤3.在需要调用扫码功能的页面进行 页面跳转

相关API

可传属性(Props)

事件(Events)

常见的错误信息:

插槽 (slot)

场景描述

在众多移动应用中需要用到扫码二维码或条码查询信息的场景比比皆是,如 商品管理中查询商品信息,订单跟踪过程中扫码单号查询订单信息和库存管理中的商品盘点。

app微信小程序-原生扫码功能">APP、微信小程序如何实现 (原生扫码功能)

<!-- 在 'manifest.json' 中允许打开摄像头权限 --><template><button @click="scanQRcodes">扫码</button>
</template><script setup>
// 扫码
const scanQRcodes = () => {uni.scanCode({success: (res) => {if (res.result) {console.log('扫描结果:', res.result);} else {uni.showToast({title: '扫描失败',icon: 'none'});}},fail: (err) => {if (err.errMsg.includes('cancel')) {uni.showToast({title: '扫描已取消',icon: 'none'});} else {uni.showToast({title: '调用相机失败',icon: 'none'});}}});
};
</script>

h5扫码功能插件">h5如何实现(扫码功能插件)

步骤1.导入插件(两种方式,选其一)

(1)HBuilder 创建的项目:从应用市场导入 mumu-getQrcode插件 到uniapp项目中mumu-getQrcodeicon-default.png?t=O83Ahttps://ext.dcloud.net.cn/plugin?id=7007

(2)脚手架创建的 uni 项目:需要自行安装 jsQR 依赖,并且修改组件中源码中的引入。

# 安装 jsQR
npm install jsqr --save# 修改组件源码对 jsQR 依赖
import jsQR from "jsqr"

步骤2.新建页面 scan-qrcode,作为扫码页面。

<template><view class="container"><mumu-get-qrcode @success='qrcodeSucess' @error="qrcodeError"></mumu-get-qrcode></view>
</template><script>import mumuGetQrcode from '@/uni_modules/mumu-getQrcode/components/mumu-getQrcode/mumu-getQrcode.vue'export default {components: {mumuGetQrcode  //注册},data() {return {}},name: 'Qrcode',methods: {qrcodeSucess(data) { //扫码成功console.log(data)// 确认弹窗(若不需要可以去除)uni.showModal({title: '成功',content: data,success: () => { // 确认弹窗后的操作 }})},qrcodeError(err) {  //扫码失败uni.showModal({title: '摄像头授权失败',content: '摄像头授权失败,请检测当前浏览器是否有摄像头权限。',success: () => {uni.navigateBack({})  //返回到上一页}})}}};
</script>

步骤3.在需要调用扫码功能的页面进行 页面跳转

uni.navigateTo({url: '/pages/scan-qrcode/scan-qrcode'
});

相关API

可传属性(Props)

参数说明类型默认值
continue是否连续获取。false 监听一次 true 持续监听Booleanfalse
exact选调用摄像头。environment 后摄像头 user 前摄像头Stringenvironment
size扫码屏幕大小。whole 全屏 balf 半屏Stringwhole
definition调用摄像头清晰度。fasle 正常 true 高清Booleanfalse

事件(Events)

事件名说明回调参数
success检测到图中有二维码并读取到数据是回调二维码数据
error组件内部发送错误,通常是摄像头没有调用成功错误信息,详情见下

常见的错误信息:

  • AbortError[中止错误]

    尽管用户和操作系统都授予了访问设备硬件的权利,而且未出现可能抛出NotReadableError异常的硬件问题,但仍然有一些问题的出现导致了设备无法被使用。

  • NotAllowedError[拒绝错误]

    用户拒绝了当前的浏览器实例的访问请求;或者用户拒绝了当前会话的访问;或者用户在全局范围内拒绝了所有媒体访问请求。

  • NotFoundError[找不到错误]

    找不到满足请求参数的媒体类型。

  • NotReadableError[无法读取错误]

    尽管用户已经授权使用相应的设备,操作系统上某个硬件、浏览器或者网页层面发生的错误导致设备无法被访问。

  • OverconstrainedError[无法满足要求错误]

    指定的要求无法被设备满足,此异常是一个类型为OverconstrainedError的对象,拥有一个constraint属性,这个属性包含了当前无法被满足的constraint对象,还拥有一个message属性,包含了阅读友好的字符串用来说明情况。

  • SecurityError[安全错误]

    getUserMedia() 被调用的 Document 上面,使用设备媒体被禁止。这个机制是否开启或者关闭取决于单个用户的偏好设置。

  • TypeError[类型错误]

    constraints 对象未设置[空],或者都被设置为false

插槽 (slot)

插槽名称说明默认值
error当发送错误时,在页面上显示的内容相机权限被拒绝提示

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家点点收藏+关注 ~💕  

​ 

   更多专栏订阅推荐:

🥕 JavaScript深入研究

👍 前端工程搭建
💕 vue从基础到起飞

✈️ HTML5与CSS3

🖼️ JavaScript基础

⭐️ uniapp与微信小程序

📝 前端工作常见问题与避坑指南

✍️ GIS地图与大数据可视化

📚 常用组件库与实用工具

💡 java入门到实战 


http://www.ppmy.cn/news/1573802.html

相关文章

【核心算法篇十三】《DeepSeek自监督学习:图像补全预训练方案》

引言:为什么自监督学习成为AI新宠? 在传统监督学习需要海量标注数据的困境下,自监督学习(Self-Supervised Learning)凭借无需人工标注的特性异军突起。想象一下,如果AI能像人类一样通过观察世界自我学习——这正是DeepSeek图像补全方案的技术哲学。根据,自监督学习通过…

如何使用 DeepSpeed-Chat 和自定义数据集训练类 ChatGPT 模型

如果你想使用自己的数据集进行训练&#xff0c;可以按照以下步骤操作&#xff1a; 1. 数据集格式要求 DeepSpeed-Chat 的数据集需要符合特定的格式。每个数据项应该是一个 JSON 对象&#xff0c;包含以下字段&#xff1a; JSON复制 {"prompt": "Human: 你的…

zookeeper有序临时结点实现公平锁的实践例子

目录 实践例子1. 先创建一个持久结点2. 创建一个结点监听程序3. 锁程序4. 测试和输出截图测试说明 回顾zkNode类型zookeeper分布式锁的优缺点 实践例子 1. 先创建一个持久结点 ./bin/zkServer.sh start conf/zoo_local.cfg ./bin/zkCli.sh -server 127.0.0.1:21812. 创建一个…

[C++语法基础与基本概念] std::function与可调用对象

std::function与可调用对象 函数指针lambda表达式std::function与std::bind仿函数总结std::thread与可调用对象std::async与可调用对象回调函数 可调用对象是指那些像函数一样可以直接被调用的对象&#xff0c;他们广泛用于C的算法&#xff0c;回调&#xff0c;事件处理等机制。…

Linux日志系统

Linux日志系统 日志与日志系统介绍 计算机中的日志是记录系统和软件运行中发生事件的文件&#xff0c;主要作用是监控运行状态、记录异常信息&#xff0c;帮助快速定位问题并支持程序员进行问题修复。它是系统维护、故障排查和安全管理的重要工具 一般情况下&#xff0c;日志…

Tomcat的升级

Tomcat 是一个开源的 Java Servlet 容器&#xff0c;用于部署 Java Servlet 和 JavaServer Pages&#xff08;JSP&#xff09;。随着新版本的发布&#xff0c;Tomcat 通常会带来性能改进、安全增强、新特性和对最新 Java 版本的更好支持。升级 Tomcat 服务器通常涉及到以下几个…

计算机三级网络技术知识汇总【3】

第三章 IP地址规划设计技术 1. IP地址的概念 1.1 IP 地址分类 1.1.1 IP 地址的概念 IP 地址是网络号与主机号组成的32位二进制数。IP 地址通常用“点分十进制”表示成 (x.x.x.x) 的形式&#xff0c;其中&#xff0c;x.x.x.x 都是 0-255 之间的十进制整数。 例如&#xff1…

P3052 [USACO12MAR] Cows in a Skyscraper G

网址如下&#xff1a; P3052 [USACO12MAR] Cows in a Skyscraper G - 洛谷 &#xff08;题意翻译中的wi改成ci&#xff09; 好久没写博客了&#xff0c;寒假加入校队&#xff0c;高强度刷题&#xff0c;感觉懒得写&#xff0c;寒假前倒是写了一个关于虚拟机共用宿主机的VPN的博…