Back to Uni App

Scan Code

docs/api/scan-code.md

2.3.36.6 KB
Original Source
<!-- ## uni.scanCode(options?) @scancode -->

::: sourceCode

uni.scanCode(options?) @scancode

GitCode: https://gitcode.com/dcloud/uni-api/tree/alpha/uni_modules/uni-scanCode

GitHub: https://github.com/dcloudio/uni-api/tree/alpha/uni_modules/uni-scanCode

:::

扫码(包括一维码和二维码)

scanCode 兼容性

Web微信小程序AndroidiOSiOS uni-app x UTS 插件HarmonyOSHarmonyOS(Vapor)
<a style="color:unset;" href="https://vote.dcloud.net.cn/#/?name=uni-app%20x">x</a>4.414.714.714.714.615.0

参数

名称类型必填默认值兼容性描述
optionsScanCodeOptions-Web: x; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -uni.scanCode参数定义

options 的属性描述

名称类型必备默认值兼容性描述
onlyFromCameraboolean-Web: x; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -是否只能从相机扫码,不允许从相册选择图片
scanTypeArray<string>-Web: x; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -扫码类型
success(res: ScanCodeSuccess) => void-Web: x; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -uni.scanCode成功回调函数定义
fail(res: ScanCodeFail) => void-Web: x; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -uni.scanCode失败回调函数定义
complete(res: any) => void-Web: x; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -uni.scanCode完成回调函数定义
scanType 的属性描述
合法值兼容性描述
barCodeWeb: x; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
qrCodeWeb: x; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
datamatrixWeb: x; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
pdf417Web: x; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --

ScanCodeSuccess 的属性值 @scancodesuccess-values

名称类型必备默认值兼容性描述
resultstring-Web: x; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -
scanTypestring-Web: x; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -
charSetstring-Web: x; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -所扫码的字符集
pathstring-Web: x; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -当所扫的码为当前小程序二维码时,会返回此字段,内容为二维码携带的 path
rawDatastring-Web: x; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -原始数据,base64编码

示例

示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见

该 API 不支持 Web,请运行 hello uni-app x 到 App 平台体验

::: preview

appRedirect https://hellouniappx.dcloud.net.cn/appredirect.html?path=pages/API/scan-code/scan-code

uvue
<template>
	<view>
		<page-head :title="title"></page-head>
		<view class="uni-padding-wrap uni-common-mt">
			<view class="uni-title">扫码结果:</view>
			<view v-if="result" class="scan-result">
				{{result}}
			</view>
			<view class="uni-btn-v">
				<button type="primary" @click="scan">扫一扫</button>
			</view>
		</view>
	</view>
</template>
<script setup lang="uts">
	const title = ref('scanCode')
	const result = ref('')
	const scan = () => {
		uni.scanCode({
			success: (res: ScanCodeSuccess) => {
        console.log('res: ',res);
				result.value = res.result
			},
			fail: (err: ScanCodeFail) => {
        console.log('err: ',err);
				// 需要注意的是小程序扫码不需要申请相机权限
			}
		});
	}
</script>

<style>
	.scan-result {
		min-height: 25px;
		line-height: 25px;
	}
</style>

:::

参见

通用类型

GeneralCallbackResult

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -错误信息

平台实现说明

  • uni-app x的Android/iOS平台的扫码基于Google的机器学习库,对各种一维、二维码都有较好的识别效果。超过了uni-app的扫码。 扫码API,其实是一个开源的uvue页面,页面中内嵌了camera组件,camera组件提供扫码模式。源码在文档上方点击右侧gitcode或github。
    如需连续扫码,推荐使用camera组件
  • 鸿蒙、小程序直接调用了其平台提供的扫码API,UI不可自定义。但各种一维、二维码均可识别。

依赖库版本

Android端实现扫码所使用的依赖库

"androidx.camera:camera-core:1.4.1",
"com.google.mlkit:barcode-scanning:17.2.0",
"com.github.albfernandez:juniversalchardet:2.0.4"

iOS端实现扫码所使用的依赖库

pod 'GoogleMLKit/BarcodeScanning', '6.0.0'