更新记录
1.0.0(2026-01-21)
- feat(iOS): 补齐相机扫码 + 图片扫码(ScanKitFrameWork)
- feat(iOS): 补齐相机权限 check/request,并处理用户取消扫码的快速失败
- feat: 区分扫码取消与扫码失败(新增
9010010) - chore: 同步插件文档与平台支持标记
平台兼容性
uni-app(4.87)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | √ | - | √ | √ | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.87)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | √ | √ | - | - |
hans-hw-ml-kit
一个基于UTS开发的扫码插件,专为华为ML Kit设计,支持完整的权限管理和扫码功能。
功能特性
- ✅ 支持QR码和条码识别
- ✅ 华为扫码SDK支持(Android:Huawei ML Kit Scan;iOS:Huawei ScanKit)
- ✅ 相机实时扫码和图片扫码两种模式
- ✅ 完善的权限检查和申请机制
- ✅ Android/iOS 同一套API
- ✅ 完善的错误处理和类型定义
支持平台
- ✅ Android (华为 ML Kit Scan)
- ✅ iOS (Huawei ScanKit / ScanKitFrameWork,iOS 12+)
API 说明
初始化插件
import { initScanCode } from '@/uni_modules/hans-hw-ml-kit'
initScanCode({
success: (res) => {
console.log('初始化成功:', res)
// res.isSupported - 是否支持华为ML Kit
},
fail: (err) => {
console.error('初始化失败:', err)
}
})
说明:
- 建议应用启动/页面 onLoad 调一次
initScanCode;未初始化直接调用scanCode会走失败回调(9010003)。 - Android/iOS 侧都按“单次扫码”设计,同一时刻只建议发起一次
scanCode(重复调用可能覆盖上一次回调)。
扫码功能
import { scanCode } from '@/uni_modules/hans-hw-ml-kit'
// 相机扫码
scanCode({
scanType: 'all', // 'qr' | 'barcode' | 'all'
mode: 'camera',
success: (res) => {
console.log('扫码结果:', res)
// res.text - 扫码内容
// res.format - 码格式
// res.scanType - 码类型
},
fail: (err) => {
console.error('扫码失败:', err)
}
})
// 图片扫码
scanCode({
scanType: 'qr',
mode: 'image',
imagePath: '/path/to/image.jpg',
success: (res) => {
console.log('图片扫码结果:', res)
},
fail: (err) => {
console.error('图片扫码失败:', err)
}
})
参数约定:
scanType:'qr' | 'barcode' | 'all'(默认all)。mode:'camera' | 'image'(默认camera)。imagePath:仅mode: 'image'必填;支持uni.chooseImage返回的临时路径,也支持file://...。
权限管理
import { checkPermission, requestPermission } from '@/uni_modules/hans-hw-ml-kit'
// 检查相机权限
checkPermission({
permissions: ['android.permission.CAMERA'],
success: (res) => {
if (res.allGranted) {
console.log('相机权限已授权')
} else {
console.log('相机权限未授权:', res.deniedList)
}
},
fail: (err) => {
console.error('权限检查失败:', err)
}
})
// 申请相机权限
requestPermission({
permissions: ['android.permission.CAMERA'],
success: (res) => {
if (res.allGranted) {
console.log('权限申请成功')
} else {
console.log('部分权限被拒绝:', res.deniedList)
}
},
fail: (err) => {
console.error('权限申请失败:', err)
}
})
说明(跨端一致性):
- iOS 侧仅识别“相机权限”这一类权限;为了方便同一套代码复用,传
android.permission.CAMERA在 iOS 侧也会被识别为相机权限(内部按字符串包含camera判断)。
日志开关
import { setLogEnabled } from '@/uni_modules/hans-hw-ml-kit'
// 默认开启;关闭后插件内部将不再输出日志
setLogEnabled(true)
setLogEnabled(false)
说明:setLogEnabled 同时控制 UTS 层与原生(Android/iOS)层的日志输出;日志统一前缀为 [hans-hw-ml-kit]。
错误码说明
| 错误码 | 说明 |
|---|---|
| 9010001 | 不支持的平台 |
| 9010002 | 相机权限被拒绝 |
| 9010003 | 初始化失败 |
| 9010004 | 扫码失败 |
| 9010010 | 扫码取消 |
| 9010005 | 图片路径不存在 |
| 9010006 | 不支持的ML Kit提供商 |
| 9010007 | 权限被拒绝 |
| 9010008 | 权限申请失败 |
| 9010009 | 权限被永久拒绝 |
权限配置
Android:插件已自动配置以下权限:
android.permission.CAMERA- 相机权限(见utssdk/app-android/AndroidManifest.xml)
iOS:请在应用侧配置权限描述(插件提供了示例片段,需合并到你的 iOS 工程/配置中):
NSCameraUsageDescription(相机扫码)NSPhotoLibraryUsageDescription(若使用“相册选图 + 图片识别”)- 示例:
utssdk/app-ios/Info.plist
依赖说明
插件自动配置以下依赖:
- 华为 Scan Kit:
com.huawei.hms:scanplus:2.13.0.303 - iOS ScanKit(CocoaPods):
ScanKitFrameWork (~> 1.1.0.306)
技术实现
本插件采用 UTS + 原生混编:
- UTS层:负责接口定义、参数校验、权限管理和线程调度
- Android(Kotlin):负责 Huawei ML Kit Scan 的具体实现和回调处理
- iOS(Swift):负责 Huawei ScanKit 的具体实现和回调处理

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 225
赞赏 0
下载 13548282
赞赏 1850
赞赏
京公网安备:11010802035340号