更新记录
v1.0(2026-04-10)
PDA 广播扫码(Honeywell / 通用)
在 uni-app 打包的 Android App 中,通过 系统广播(Broadcast) 接收工业 PDA / 扫码枪解码结果,不依赖 DCloud 付费扫码原生插件。默认适配 Honeywell 等机型常见 Intent 输出;若你的设备使用自定义 Action / Extra 字段,可通过本地存储扩展。
平台兼容性
PDA 广播扫码(Honeywell / 通用)
在 uni-app 打包的 Android App 中,通过 系统广播(Broadcast) 接收工业 PDA / 扫码枪解码结果,不依赖 DCloud 付费扫码原生插件。默认适配 Honeywell 等机型常见 Intent 输出;若你的设备使用自定义 Action / Extra 字段,可通过本地存储扩展。
适用环境
| 平台 | 说明 |
|---|---|
| App-Android | 支持(需 plus.android) |
| App-iOS | 不支持(无广播扫码场景) |
| H5 / 小程序 | 不支持;调用接口会安全返回 null,不会崩溃 |
安装
- 将本插件目录
uni_modules/pda-broadcast-scan放入你的 uni-app 工程uni_modules下(或通过插件市场导入)。 - 按下方「接入步骤」修改
main.js与业务页。
接入步骤
1. 在 main.js 启动广播引擎(推荐)
在应用启动时注册一次广播接收器,避免首屏扫码遗漏:
import { startPdaScanBroadcastEngine } from '@/uni_modules/pda-broadcast-scan/js_sdk/pda-broadcast-scan/pdaHoneywellBroadcast.js'
function bootPdaScanBroadcast() {
if (typeof plus === 'undefined' || !plus.android) return
try {
startPdaScanBroadcastEngine()
} catch (e) {
console.warn('[PDA Scan] boot', e)
}
}
if (typeof document !== 'undefined') {
document.addEventListener('plusready', bootPdaScanBroadcast)
}
setTimeout(bootPdaScanBroadcast, 0)
setTimeout(bootPdaScanBroadcast, 400)
也可省略上述代码,仅在调用 initScan 时懒加载引擎(插件内部会 startPdaScanBroadcastEngine)。
2. 在页面中绑定扫码回调
推荐使用统一入口:
import {
getHoneywellScanPluginNow,
bindHoneywellScan,
unbindHoneywellScan,
stopScanThenRebindForTriggerMode
} from '@/uni_modules/pda-broadcast-scan/js_sdk/pda-broadcast-scan/index.js'
const plugin = getHoneywellScanPluginNow()
if (plugin) {
bindHoneywellScan(plugin, (res) => {
const code = res && res.code
console.log('条码:', code)
})
}
// 页面卸载时取消监听
unbindHoneywellScan(plugin)
注意:
initScan的回调请使用 同步函数(避免在回调里写复杂异步链导致异常吞没)。- 「按下扫码、松开停止」类设备:扫码一次后如需继续监听,可使用
stopScanThenRebindForTriggerMode(plugin, onScan),避免重复叠加监听(详见源码注释)。
3.(可选)扩展广播 Action / Extra 键名
若设备文档要求自定义广播 Action 或 Intent Extra 字段名,可在运行时使用 uni.setStorageSync 写入 JSON 字符串数组:
| Storage Key | 值示例 | 含义 |
|---|---|---|
pda_scan_broadcast_actions_json |
["com.vendor.SCAN_RESULT"] |
额外监听的 Action(会与内置列表合并去重) |
pda_scan_broadcast_extra_keys_json |
["data","my_barcode"] |
额外尝试读取的 Extra 键名 |
也可在代码中引用常量(避免手写字符串笔误):
import { PDA_SCAN_BROADCAST_STORAGE_KEYS } from '@/uni_modules/pda-broadcast-scan/js_sdk/pda-broadcast-scan/index.js'
uni.setStorageSync(PDA_SCAN_BROADCAST_STORAGE_KEYS.ACTIONS_JSON, JSON.stringify(['com.xxx.ACTION']))
设备侧设置(重要)
请在 PDA 扫描设置 中将输出方式设为 Intent / 广播,并开启 附带解码数据(常见文案:Data、字符串、附加字段等)。若广播不带任何条码数据,日志中会出现 [PDA Scan] 广播 Intent 未附带条码 类提示,此时应用无法解析,需先改设备端输出配置。
API 概要
| 导出 | 作用 |
|---|---|
startPdaScanBroadcastEngine() |
App 级注册广播(建议 main.js 调用一次) |
getHoneywellPdaScan() |
返回带 initScan / stopScan / removeAllEventListeners 的插件对象 |
getHoneywellScanPluginNow() |
同上,封装 try/catch,非 App 返回 null |
bindHoneywellScan(plugin, onScan, replace?) |
绑定扫码回调;replace=true 时会先移除全部监听再绑定 |
unbindHoneywellScan(plugin) |
移除监听 |
stopScanThenRebindForTriggerMode(plugin, onScan) |
触发模式:停止后延迟再绑定,防双层监听 |
getScanBroadcastActions / getScanBroadcastExtraKeys |
读取当前 Storage 中的扩展配置 |
PDA_SCAN_BROADCAST_STORAGE_KEYS |
Storage 键名常量 |

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