更新记录
1.0.0(2025-03-28)
- 支持usb自感模式的设备,支持扫码枪、扫码盒子、收银台桌面扫描器等各种扫码设备
- 支持标点符号、英文大小、特殊字符等标准ASCII码数据识别,毫秒级响应
- 无需获取焦点事件,无需弹出键盘,无需绑定依赖任何输入框
平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 3.95,Android:5.0,iOS:不确定,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 | 鸿蒙元服务 |
---|---|---|---|---|
× | × | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
概述
基于Android设备扫码枪封装,支持usb自感模式的设备,支持扫码枪、扫码盒子、收银台桌面扫描器等各种扫码设备,支持标点符号、英文大小、特殊字符等标准ASCII码数据识别,毫秒级响应,无需获取焦点事件,无需弹出键盘,无需绑定依赖任何输入框。
目前插件市场上大多数扫码枪插件是模拟键盘进行输入,大多数时候需要使用带焦点的输入框接收其扫描的信息。设置一个带焦点的输入框进行接收,此方式容易漏读扩展的ASCII码数据,除非二维码是标准的ASCII码(1-128),此外使用输入框不方便且焦点控制不好导致扫码不到数据,非常难用且不好控制。
注意事项
(1).从应用市场下载插件导入自己项目后,要先制作自定义插件后,才可以运行使用
(2).插件需在 Android 5.0+ 以上版本可正常使用
(3).尽量使用 HBuilderX 4.0+ 以上的最新版本,以便更好在uni-app和uni-app x中使用uts插件
以下摘自官方:
HBuilderX 3.6+ 支持uni-app中使用uts插件 HBuilderX 3.9+ 支持uni-app x中使用uts插件
(4).官方已经全部更新到uts插件,对传统的App Native原生插件不在提供技术支持维护和上架的支持, 如果有需要使用App Native原生插件集成或者离线打包集成的,请私信联系作者提供支持。
以下摘自官方说明,uts插件比App原生插件有更多优势:
uts插件更小巧 插件作者更新uts插件免审核,无需等待DCloud管理员审核上架 uts插件天然支持多版本,插件作者更新后,使用者可以不更新,可以仍然使用之前下载到本地的老版插件 uts插件支持源码版计费,使用者可以审查源码,控制安全问题,也可以二开 插件市场支持uts的插件上传,禁止App原生插件的上架和维护
完整代码示例
<template>
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<view class="text-area">
<text class="title">扫码结果:{{scannerResult}}</text>
</view>
<button type="default" @click="openUsbScannerGun()">打开扫码枪</button>
</view>
</template>
<script>
import { showScannerDialog,closeScannerDialog } from "@/uni_modules/shimiso-usbsacnner"
const modal = uni.requireNativePlugin('modal');
export default {
data() {
return {
scannerResult: '',
}
},
created() {
},
methods: {
// usb码枪检测事件
openUsbScannerGun() {
let params = {
text:"请拿出扫码枪扫码",//提示文字
imagePath:"static/scanner.png",//提示图
widthRatio:0.25,//弹框宽度百分比
heightRatio:0.35,//弹框高度百分比
imageWidth:140,//图片宽度
imageHeight:140,//图片高度
isFinishClose:false,//扫码结束是否关闭弹框
closeable:true//右上角关闭按钮是否显示
}
let _this = this
showScannerDialog(params,{
onScanSuccess(msg){//扫码成功回调
_this.scannerResult = msg
console.log('onScanSuccess--->',msg)
closeScannerDialog()
},
onScanCancel(){//扫码取消回调
console.log('onScanCancel--->')
},
onError(code,msg){//错误回调
console.log('onError--->',code,msg)
}
})
},
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 100rpx;
width: 100rpx;
margin-top: 50rpx;
margin-bottom: 50rpx;
}
.text-area {
margin-bottom: 50rpx;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>