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

news2025/1/9 14:35:10

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

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

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

​ 🌈🌈文章目录  

场景描述

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

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

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

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

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

相关API

可传属性(Props)

事件(Events)

常见的错误信息:

插槽 (slot)

场景描述

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

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如何实现(扫码功能插件)

步骤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.coloradmin.cn/o/2273837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql、postgresql、druid链接池踩坑记录

The last packet successfully received from the server wIs 10,010 milliseconds ago. The last packet sent successfully to the server was 10,010 milliseconds ago.### The error may exist in URL mysql 链接字符串没有 &connectTimeout600000&socketTimeout6…

STM32+WIFI获取网络时间+8位数码管显示+0.96OLED显

资料下载地址&#xff1a;STM32WIFI获取网络时间8位数码管显示0.96OLED 1、项目介绍 主控芯片STM32C8T6 接线&#xff1a;串口1&#xff1a;PA9 PA10 OELD &#xff1a;PB6 PB7 数码管使用&#xff1a;MAX7219 8位数码管 Max7219_pinCLK PAout(5) Max7219_pinC…

FPGA车牌识别

基于FPGA的车牌识别主要包含以下几个步骤&#xff1a;图像采集、颜色空间转换、边缘检测、形态学处理&#xff08;腐蚀和膨胀&#xff09;、特征值提取、模板匹配、结果显示。先用matlab对原理进行仿真&#xff0c;后用vivado和modelsim进行设计和仿真。 一、1.图像采集采用ov…

一文流:Mysql进阶(多图提醒⚠️)

一文流系列是作者苦于技术知识学了-忘了&#xff0c;背了-忘了的苦恼&#xff0c;决心把技术知识的要点一笔笔✍️出来&#xff0c;一图图画出来&#xff0c;一句句讲出来&#xff0c;以求刻在&#x1f9e0;里。 该系列文章会把核心要点提炼出来&#xff0c;以求掌握精髓&#…

深度学习从入门到实战——卷积神经网络原理解析及其应用

卷积神经网络CNN 卷积神经网络前言卷积神经网络卷积的填充方式卷积原理展示卷积计算量公式卷积核输出的大小计算感受野池化自适应均值化空洞卷积经典卷积神经网络参考 卷积神经网络 前言 为什么要使用卷积神经网络呢&#xff1f; 首先传统的MLP的有什么问题呢&#xff1f; - …

自动化脚本本地可执行但是Jenkins上各种报错怎么解决

作者碎碎念&#xff1a; 测试环境 Jenkinsdockerpythonunittest&#xff0c; 测试问题&#xff1a;本人在写关于SAP4Me网站的自动化脚本时遇到一个问题 本地怎么都跑的通 但是一上Jenkins会出现各种各样的问题 因为在Jenkins里面脚本是放在docker环境里面跑的 所以环境的差异…

【xLua】xLua-master签名、加密Lua文件

GitHub - Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. 如果你想在项目工程上操作&#xff0c;又发现项目工程并没导入Tools&#xff0c;可以从xLua-master工程拷贝到项目工程Assets…

Linux(上):基本知识篇

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Linux初识1 Linux简介2 Linux学习环境配置(1)安装Linux(2)FinalShell远程连接Linux服务器二、Linux基础命令1 Linux目录结构,根目录 /2 Linux命令基础(1)什么是命令、命令行?(2)…

【安卓开发】【Android Studio】项目构建失败提示【Could not read metadata.bin】解决方法

一、问题说明 在Android Studio中开发安卓项目时&#xff0c;项目构建失败&#xff0c;提示如下&#xff1a; Could not read workspace data from xxx/xxx/&#xff08;某个目录&#xff0c;和gradle有关&#xff09;&#xff1a;could not read ...metadata.bin&#xff08…

细说STM32F407单片机以轮询方式读写外部SRAM的方法

目录 一、实例的功能 二、工程配置 1、KEYLED 2、时钟、DEBUG、USART6、NVIC、GPIO、CodeGenerator 3、FSMC &#xff08;1&#xff09; 模式设置 &#xff08;2&#xff09; Bank 1子区3参数设置 1) NOR/PSRAM control组&#xff0c;子区控制参数 2) NOR/PSRAM timi…

下载ffmpeg执行文件

打开网址&#xff1a;Download FFmpeg 按下面步骤操作 解压文件就可以看到ffmpeg的执行文件了&#xff0c;需要通过命令行进行使用&#xff1a; ffmpeg命令行使用参考&#xff1a; ffmpeg 常用命令-CSDN博客

嵌入式系统 (2.嵌入式硬件系统基础)

2.嵌入式硬件系统基础 2.1嵌入式硬件系统的组成 嵌入式硬件系统以嵌入式微处理器为核心&#xff0c;主要由嵌入式微处理器、总线、存储器、输入/输出接口和设备组成。 嵌入式微处理器 嵌入式微处理器采用冯诺依曼结构或哈佛结构&#xff1a;前者指令和数据共享同一存储空间…

【合作原创】使用Termux搭建可以使用的生产力环境(九)

前言 在上一篇【合作原创】使用Termux搭建可以使用的生产力环境&#xff08;八&#xff09;-CSDN博客中我们讲到了如何安装IDEA社区版&#xff0c;并在Termux中安装VNC服务器&#xff0c;在proot-distro的Debian中启动xfce桌面&#xff0c;并通过这个方式解决了IDEA社区版中无…

计算机网络--UDP和TCP课后习题

【5-05】 试举例说明有些应用程序愿意采用不可靠的UDP, 而不愿意采用可靠的TCP。 解答&#xff1a; 这可能有以下几种情况。 首先&#xff0c;在互联网上传输实时数据的分组时&#xff0c;有可能会出现差错甚至丢失。如果利用 TCP 协议对这些出错或丢失的分组进行重传&…

STM32学习(十)

I2C模块内部结构 I2C&#xff08;Inter-Integrated Circuit&#xff09;模块是一种由Philips公司开发的二线式串行总线协议&#xff0c;用于短距离通信&#xff0c;允许多个设备共享相同的总线‌。 ‌硬件连接简单‌&#xff1a;I2C通信仅需要两条总线&#xff0c;即SCL&…

Flutter:吸顶效果

在分页中&#xff0c;实现tab吸顶。 TDNavBar的screenAdaptation: true, 开启屏幕适配。 该属性已自动对不同手机状态栏高度进行适配。我们只需关注如何实现吸顶。 view import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import p…

数据结构基础之《(13)—前缀树》

一、前缀树 1、前缀树&#xff08;Trie&#xff09;&#xff0c;又称字典树或单词查找树&#xff0c;是一种用于存储字符串集合的数据结构。 2、前缀树的操作 &#xff08;1&#xff09;单个字符串中&#xff0c;字符从前到后的加到一棵多叉树上 &#xff08;2&#xff09;字…

道品科技智慧农业与云平台:未来农业的变革之路

随着全球人口的不断增长&#xff0c;农业面临着前所未有的挑战。如何在有限的土地和资源上提高农业生产效率&#xff0c;成为了各国政府和农业从业者亟待解决的问题。智慧农业的兴起&#xff0c;结合云平台的应用&#xff0c;为农业的可持续发展提供了新的解决方案。 ## 一、智…

【Linux基础指令】第一期

一、Linux的介绍 Linux是一个开源的操作系统&#xff0c;性能、稳定性、安全性方面上都是很优秀的&#xff0c;所以它一直是企业后端系统的首选。所以其图形化界面并不是Linux的必需品&#xff0c;所以我们避免不了要使用命令行的形式来使用Linux&#xff0c;也就离不开…

​​​​​​芯盾时代以数据为核心的车联网业务安全解决方案

芯盾时代车联网业务安全建设聚焦智能网联业务运行过程产生的多维度、多模态、多视角数据以及因业务需求产生的过程数据和业务衍生数据&#xff0c;以网络安全等级保护为基础&#xff0c;坚持网络安全管理体系和技术体系并重的原则&#xff0c;加强网络安全体系化、实战化、常态…