更新记录
1.0.0(2026-10-01)
- 首次发布 iData iScanPro / iScanPlus 的 uni-app x Android UTS 封装。
- 覆盖随附 SDK 的 39 个公开接口与 41 个常量,提供扫码、多码、图像回调及扫描配置。
- 支持主线程回调、监听注销重试、原始图像缓存与参数校验。
- 兼容 T1Pro 新固件的解码版本查询;已实测二维码识别与原始图像回调。
- OCR 提供兼容入口和能力检测,随附 JAR 不含 OCR 三接口,需匹配的新版厂家 SDK。
平台兼容性
uni-app
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | app-nvue插件版本 | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|
| - | - | × | × | - | √ | 1.0.0 | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.25)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | 5.0 | × | × | × |
iData PDA 扫码 UTS(uni-app x)
面向具备 iData 扫描系统服务的 Android PDA,将 iScanPro / iScanPlus SDK 封装为 uni-app x 可调用的 UTS API,并提供 .uvue 开始/停止扫描按钮组件。
本插件是第三方接入封装,不是 iData 官方插件。
支持范围
- 完整封装随附
iscanuserapi.jar的 39 个 public 方法、41 个 ConstantUtil 常量,保留厂家方法名和参数含义,提供 UTS 类型提示。 - 普通扫码、多码配置、连续扫码、扫描键、输出方式、提示音、振动、灯光、结束符、前后缀、字符过滤、编码、解码区域、条码开关、AIM ID、批量读取及通用布尔配置。
- 路径型与字节型扫码回调;图像可返回原始文件或 Base64,提供大小限制和缓存清理。
- 可查询系统服务、SDK 接口可用性、引擎与解码版本。
OCR 限制:随附厂家 JAR 没有 setOCREnable / registerScanImage / unregisterScanImage 三个接口。插件仅提供能力检测、升级兼容入口和明确错误提示;当前版本不能启用这三项能力。 如需使用,须向厂家取得与 PDA 固件匹配的新版 SDK,替换 JAR 后重新构建、真机验证。图像视频流接口也不等于通用文字识别引擎。
多码及图像能力取决于设备扫描头、系统服务和固件;厂家文档将部分多码/取图功能限定在 DS7000/7000Pro,不保证所有 iData 机型具备全部硬件能力。
运行条件与验证范围
- 开发目标:uni-app x / Android,HBuilderX 4.25+。Android 最低声明为 5.0,但只有带兼容 iData 扫描服务的 PDA 才能使用。
- 不支持普通手机、模拟器、iOS、鸿蒙、Web 和小程序;传统 uni-app 未列为支持范围。
- 原生桥已在 T1Pro / Android 14 上实测二维码识别、原始图像回调及解码版本查询。硬件验证使用同源码独立原生诊断程序;完整 uni-app x 示例尚需在包含 JAR 的自定义基座中验收。
- 本地 UTS/Kotlin 联编及模拟场景检查已通过;其他设备配置尚未逐项完成真机验收。请先在目标设备试用并确认所需能力。
安装
- 通过插件市场导入后,确认目录为
uni_modules/idata-iscan。源码接入时,完整复制该目录,保留utssdk/app-android/libs/iscanuserapi.jar。 - 为宿主项目配置自己的 DCloud AppID 和 Android 包名。
- 首次导入或替换 JAR 后,重新制作包含插件的 Android 自定义基座,或完整打包安装。 默认运行基座及页面热更新无法新增或替换原生依赖。
- 在兼容 iData Android PDA 上运行,检查
init()与getCapabilities()。
公开示例工程只包含宿主页面与调用代码,不内置插件实现或厂家 JAR。下载示例后,先从插件市场导入 idata-iscan,再运行示例;普通授权版免费,源码授权版 15 元。
普通授权与源码授权的交付方式以平台规则为准;授权绑定、打包方式和源码交付以插件市场的订单、协议与当前规则为准。首次接入仍需制作包含厂家 JAR 的自定义基座或完整打包。随附 JAR 是厂家二进制依赖,不包含厂家 SDK 源码。
最小接入示例
<template>
<view>
<button @click="start">开始扫描</button>
<text>{{ resultText }}</text>
</view>
</template>
<script setup lang="uts">
import { ref } from 'vue'
import { onLoad, onHide, onUnload } from '@dcloudio/uni-app'
import * as iScan from '@/uni_modules/idata-iscan'
import { ScanResult } from '@/uni_modules/idata-iscan'
const resultText = ref('')
onLoad((_options: OnLoadOptions) => {
const initialized = iScan.init()
if (!initialized.ok) {
resultText.value = initialized.message
return
}
const output = iScan.setOutputMode(iScan.OUTPUT_BROADCAST)
if (!output.ok) {
resultText.value = output.message
return
}
const registered = iScan.registerScan((event: ScanResult) => {
resultText.value = event.success ? event.data! : '本次未识别到条码'
})
if (!registered.ok) resultText.value = registered.message
})
function start() {
const response = iScan.scan_start()
if (!response.ok) resultText.value = response.message
}
onHide(() => { iScan.scan_stop() })
onUnload(() => {
const response = iScan.release()
if (!response.ok) console.error(response.message)
})
</script>
也可使用 easycom 按钮组件:
<idata-iscan :disabled="!ready" @command="onScanCommand" />
command 事件参数为 (label: string, result: CommandResult)。该组件仅发起开始/停止扫描,页面仍需负责初始化、配置、监听和释放。
调用约定
- 命令返回
{ ok, code, message },查询额外返回value。ok=true表示 SDK 调用未抛错;实际扫码成功以回调success为准,硬件配置效果须在 PDA 上确认。 - 插件为 APP 级单例,每类监听只有一个回调槽位;重复注册替换前端回调。多页面共享扫描时,应由业务全局服务管理和分发,避免单页面释放其他页面正在使用的监听。
- 回调在 Android 主线程执行。注销/替换监听后,之前排队的回调不会投递给新监听。
init()幂等,不自动上下电或更改扫描参数。release()停扫、注销监听、恢复本插件禁用的扫描键并关闭本插件启用的 OCR,不恢复所有设备配置。lockScanKey(true)为启用物理扫描键,false为禁用;close()只给扫描头断电,不等同释放。- 配置条码 ID 与扫码回调
type编号是两套值,不可混用。 - 保留厂家历史拼写
setEncodeFormart(),并提供setEncodeFormat()别名。
原始图像
registerScan() 保留厂家返回的图像路径。registerScan2() 将描述符中的原始字节复制到私有缓存或 Base64;可按需配置:
const configured = iScan.setImageOptions({
mode: 'file', // file / base64 / none
maxBytes: 16777216, // 默认单图 16 MiB,最高 64 MiB
maxFiles: 32 // 默认滚动保留 32 张,允许 1–256
})
if (configured.ok) {
iScan.registerScan2((event: ScanResult) => {
console.log(event.data, event.imagePath, event.imageError)
})
}
取图还需设备支持并启用对应厂家配置,例如 saveImageMode(1)。插件不假定原始图像是 JPEG/PNG,.bin 文件和 Base64 不能保证可直接用于 <image>。图像失败不丢弃扫码结果,请检查 imageError。队列和缓存均有界;需长期保存时应及时复制到自己的持久目录。clearImageCache() 仅删除本插件生成的临时图像,不删除厂家文件。
API 与错误
完整参数、常量、返回值与 39 个 SDK 方法对照见包内 docs/API.md,类型定义见 utssdk/interface.uts,常量见 utssdk/constants.uts。
| 错误码 | 含义 |
|---|---|
| 0 | SDK 调用完成 |
| 9001 | 尚未初始化 |
| 9002 | 缺少兼容的 iData 系统服务 |
| 9003 | SDK 缺少类、方法或监听接口;当前 JAR 的 OCR 属于此情况 |
| 9004 | 参数不符合类型或范围要求 |
| 9005 | 底层调用、注册、注销或清理失败 |
| 9006 | 图像处理失败,异步回调也会通过 imageError 说明 |
离线 Android 宿主开启 R8/ProGuard 时,请显式合并 proguard-rules.pro;该文件不声称由 HBuilderX 自动合并。
隐私与依赖
插件无广告,不声明额外 Android 权限,不申请相机或外部存储权限。封装代码仅在本机接收条码、图像与元数据并回调给宿主,不向外部服务器发送数据,不包含统计 SDK。图像可按配置临时存入应用私有缓存。
随附 iscanuserapi.jar 用于访问设备厂家扫描服务,系统服务行为取决于设备厂家和固件。厂商 SDK 的权利及使用范围沿用其原有授权;插件源码授权不重新授予厂家 SDK 或其他第三方代码的权利。

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 3
赞赏 0
下载 12649803
赞赏 1953
赞赏
京公网安备:11010802035340号