更新记录

1.1.0(2026-09-18)

功能

  • 内置全屏原生扫码页:无扫码框,带关闭、提示、手电筒和绿色扫描动画
  • 支持双指缩放
  • 同屏多个二维码时暂停扫描,点选其中一个后再返回结果;只有一个码时自动返回
  • Android 改为 Camera2 取帧,避免与基座自带的 CameraX 版本冲突
  • Android 在 ML Kit 未识别时,用 ZXing 做全图、反色、中心裁切和对比度拉伸
  • iOS 同时使用 Vision 与系统扫码接口

调整

  • 未传 formats 时默认只识别二维码
  • 不依赖 CameraX,请使用自定义调试基座或云打包后真机验证

平台兼容性

uni-app(5.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(5.0)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

mlkit-scancode

App 端全屏扫码插件。Android 使用 Camera2 取帧,再用 ML Kit 识别,识别不到时用 ZXing 补一次。iOS 使用 AVFoundation,同时走 Vision 和系统扫码接口。

页面没有扫码框。只有一个二维码时自动返回;同屏多个二维码时先点选,再返回选中的内容。

平台支持

平台 实现方式 最低版本
App-Android Camera2 + ML Kit + ZXing Android 5.0(API 21)
App-iOS AVFoundation + Vision + 系统扫码 iOS 12.0

本插件只支持 App。Web、小程序请继续使用 uni.scanCode

不要在插件里再引入 CameraX。基座的 CameraBarcode 模块已经带有一套 CameraX,版本更高时会在打开扫码页时崩溃。

安装

插件在项目内,从 @/uni_modules/mlkit-scancode 导入。

修改原生代码后,必须重新打自定义调试基座或云打包。标准基座不会加载这里的原生实现。

首次扫码会申请相机权限。Android 需要 CAMERA,iOS 需要在 manifest.json 中配置 NSCameraUsageDescription

使用

import { startScan } from '@/uni_modules/mlkit-scancode'

startScan({
  tip: '将二维码对准屏幕,即可自动扫描',
  formats: ['QR_CODE'],
  vibrate: true,
  success: (res) => {
    console.log('扫码结果:', res.result, res.format)
  },
  fail: (err) => {
    console.error('扫码失败:', err.errCode, err.errMsg)
  },
  complete: (res) => {
    console.log('扫码操作完成')
  },
})

业务入口可以走 src/utils/openScanCode.js。它在 App 端调用本插件,其他端回退 uni.scanCode,返回值仍是扫码文本。

API

startScan(options)

StartScanOptions

参数 类型 必填 默认值 说明
tip string 将二维码对准屏幕,即可自动扫描 扫码页提示文案
formats string[] ['QR_CODE'] 识别格式。不传只认二维码
vibrate boolean true 成功后是否震动
success (res) => void - 成功回调。多个码时,回调的是用户点选的那一个
fail (err) => void - 失败回调
complete (res) => void - 成功或失败都会触发

ScanSuccess

字段 类型 说明
result string 扫码内容
format string 格式,例如 QR_CODE
errMsg string startScan:ok

错误码

错误码 说明
9010001 无法打开扫码页
9010002 相机权限被拒绝
9010003 用户取消
9010004 没有识别到内容

取消不要当成无效二维码提示。openScanCode.jsisScanCanceled 判断 9010003。

目录

uni_modules/mlkit-scancode/
├── package.json
├── readme.md
├── changelog.md
└── utssdk/
    ├── interface.uts
    ├── unierror.uts
    ├── app-android/
    └── app-ios/

许可

MIT

隐私、权限声明

1. 本插件需要申请的系统权限列表:

CAMERA

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。