1.前言

  • PDA扫码是工厂项目中是非常常见的功能,这里记录下工作中的开发思路和模板,仅供参考
  • PDA扫码模式:模拟输入和广播模式
  • 模拟输入:模拟键盘输入,一般后面会设置追加一个回车,优点是通用型强,缺点是每次扫描前需要先获取焦点,且弹出的软键盘会遮挡页面布局
  • 广播模式:通过底层的广播进行事件驱动,优点是无须获取焦点,可随意扫码,缺点是需要进行适配(根据不同的设备型号适配对应的广播名称),二是如果页面有多个输入框,则需要额外的逻辑进行当前扫描属于哪个输入框

2.流程步骤

  • 启动App时进行初始化(main.js)
// #ifdef APP
//初始化pda扫码
import pda from '@/libs/util/pda.js'
pda.initScan()
// #endif
  • 页面监听:当广播扫码触发时,触发当前页面的handlePdaScan方法
<script>
export default{
methods: {
//对接pda扫码
handlePdaScan(code){ },
}
}
</script>
  • 不推荐使用公共组件:一是每个页面都需要引入和销毁,增加代码体积,二是后台页面也会响应扫描,增加出bug的风险

3.广播扫描插件的代码

var main = null
var filter = null
var receiver = null //适配的pda列表
var pdaList = [ ] //当前设备型号
var model = plus.device.model.toLowerCase() var pda = {
initScan() {
// #ifdef APP
main = plus.android.runtimeMainActivity() //获取activity
var context = plus.android.importClass('android.content.Context') //上下文
var IntentFilter = plus.android.importClass('android.content.IntentFilter')
filter = new IntentFilter()
//获取action
var action = getAction()
filter.addAction(action) receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: (context, intent) => {
//能接收到广播说明当前设备为pda设备(未启用)
getApp().globalData.isPda = true plus.android.importClass(intent)
var name = getName()
var code = intent.getStringExtra(name)
//拿到当前页面
var nowPage = getCurrentPages().pop()
//调用当前页面的方法,将结果传递过去
nowPage.$vm.handlePdaScan && nowPage.$vm.handlePdaScan(code)
}
}) main.registerReceiver(receiver, filter)
// #endif
}
} //匹配Action
function getAction(){
var target = pdaList.find(item=>{
return item.model.toLowerCase() == model
})
if(target){
return target.action
}else{
return "com.juqent.scan"
}
} //匹配name
function getName(){
var target = pdaList.find(item=>{
return item.model.toLowerCase() == model
})
if(target){
return target.name
}else{
return "data"
}
} export default pda

uni-app PDA扫描的更多相关文章

  1. APP漏洞扫描用地址空间随机化

    APP漏洞扫描用地址空间随机化 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描器有一项静态分析加动态模糊测试的方法来检测的功能,并详细的介绍了它在针对本 ...

  2. APP漏洞扫描器之本地拒绝服务检测详解

    APP漏洞扫描器之本地拒绝服务检测详解 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确全面.本文将讲一下应用漏洞 ...

  3. APP漏洞扫描用地址空间随机化【转】

    转自:http://www.cnblogs.com/alisecurity/p/6141575.html 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描 ...

  4. 国内APP漏洞扫描收费情况调查

    概述 上一次分享了应用加固的评测后,很多人想看看漏洞扫描相关的对比数据.其实在选择市面上这些移动安全类的产品时,经常为各种复杂的数据而感到疑惑,不知道怎么来评判各自的性能以及价格,从而选择出一款性价比 ...

  5. Android PDA扫描枪广播接搜条码并使用

    在开发扫描枪扫码接收广播条码的时候,由于厂商如shit般的文档和对Anroid基础知识的缺失,走了一些弯路,以下是广播接收条码并使用的代码实现 : 1 : 动态注册广播 PDA扫描枪对扫码有强大支持, ...

  6. uni app中使用自定义图标库

    项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...

  7. uni app 零基础小白到项目实战-1

    uni-app是一个使用vue.js开发跨平台应用的前端框架. 开发者通过编写vue.js代码,uni-app将其编译到Ios,android,微信小程序等多个平台,保证其正确并达到优秀体验. Uni ...

  8. 制作IOS企业版App网页扫描二维码下载安装

    有时候我们需要在XX网站的主页上去扫描二维码下载,那么ios开发中如何做到这一点呢. 我给大家解答一下,这也是在最近工作中用到的部分,在网上了解了一些. 下面给大家分解一下步骤: 1.Plist 和 ...

  9. 今天网站后台登录页面需要生成一个二维码,然后在手机app上扫描这个二维码,实现网站登录的效果及其解决方案如下

    要实现二维码登录,需要解决2个技术,1.需要js websocket 与后台php实现长连接技术 2.实现二维码生成技术 要实现这个功能第二个算是比较简单,只需要下载一个php的二维码生成器即可,但要 ...

  10. 为什么下载APP,扫描二维码,关注微信公众号,就会送牛奶送小礼品?下载使用量高,会怎样?

    以前的老办法是到处贴广告,电视上,广播上各种宣传. 在互联网时代,企业要盈利,除了不断优化升级自己的产品和服务,大量推广宣传产品,还要懂得用户思维.现在有网站,有APP,有微信,有二维码,可以卖产品, ...

随机推荐

  1. ST-SSL: 用于交通流量预测的时空自监督学习《Spatio-Temporal Self-Supervised Learning for Traffic Flow Prediction》(交通流量预测、时空异质性、自监督、数据增强)

    2023年10月23日,继续论文,好困,想发疯. 论文:Spatio-Temporal Self-Supervised Learning for Traffic Flow Prediction Git ...

  2. Angular 18+ 高级教程 – Animation 动画

    前言 Angular 有一套 built-in 的 Animation 方案.这套方案的底层实现是基于游览器原生的 Web Animation API. CSS Transition -> CS ...

  3. LeetCode题集-4 - 寻找两个有序数组的中位数,图文并茂,六种解法,万字讲解

    题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 算法的时间复杂度应该为 O(log (m+n)) . 作为目前遇到 ...

  4. 【QT性能优化】QT性能优化之QT性能优化实战 QML优化 QT高性能 QT6系列视频课程 QT6 性能优化实战 QT高性能 QT原理源码 QML优化 GUI绘图原理源码

    QT性能优化实战视频课程 QT6 Widgets高性能应用编程 1.课前考试 2.字符串优化(上) 3.字符串优化(下) 4.绘图优化(上) 5.绘图优化(下)  6.QT界面优化(上) 7.QT界面 ...

  5. 音视频入门-8-ffmpeg小实验-v4l2 ubuntu取图、格式转换、编码成H264,ffplay观看

    1. getpic_transform_encode2h264.c #include <stdio.h> #include <string.h> #include <st ...

  6. MySQL 用户、权限管理,C/C++连接与使用

    目录 用户 用户管理 查询所有用户 查看当前用户 查看当前连接数 创建用户 删除用户 修改密码规则 查看规则/策略 规则说明 临时设置 持久设置 修改密码 权限 数据库提供的 权限列表 查看权限 给用 ...

  7. 如何关闭每次打开启动软件前的弹窗(用户账户控制)你要允许此应用.WIN11、10、7

    1.先点击任务栏内的搜索,输入"控制面板",然后点开 2.然后在右上角输入"更改用户",然后在下方点击"更改用户账户控制设置" 3.然后把& ...

  8. JIT编译选项

    JIT(Just-In-Time)优化在编译过程中有多种编译选项可以支持,不同语言和平台可能有不同的实现.以通用的 JIT 编译器为例,以下是一些常见的编译选项: 编译级别(Compilation L ...

  9. 使用dynamic debug帮助调试

    你一定在kernel source code中看过很多pr_debug()/dev_dbg()/print_hex_dump_debug()吧,这些debug语句提供更多的信息帮助我们了解内核运行流程 ...

  10. CPU缓存伪共享

    CPU缓存什么东西?当然这个问题很多人有可能觉得比较傻,CPU缓存什么,肯定是缓存数据(代码)啊,要不然还能缓存啥,这个确实没问题,但是CPU到底缓存什么样的数据呢?因为对CPU来说,无论是指令,还是 ...