uni-app plus.barcode.create 在ios中filters参数无法覆盖默认设置
uni-app plus.barcode.create 在ios中filters参数无法覆盖默认设置
操作步骤:
- 使用plus.barcode.create创建扫码控件,第二个参数 filters 参数[plus.barcode.CODE128],打包成IOS APP
预期结果:
- 只能识别出CODE128这种格式的条码
实际结果:
- 除了CODE128还可以识别出QR、EAN13、EAN8这几种条码
bug描述:
- plus.barcode默认支持QR、EAN13、EAN8,创建扫码识别控件时设置了filters这个参数,IOS上还是支持QR、EAN13、EAN8,安卓上只支持设置的filters。希望IOS能和安卓一样,设置了filters这个参数就把默认设置覆盖了。
| 开发环境 | 版本号 | 项目创建方式 |
|------------------|----------|--------------|
| HBuilderX | 3.2.6 | 云端 |
| 手机系统 | | |
| iOS | | |
| 手机系统版本号 | IOS 14 | |
| 手机厂商 | 苹果 | |
| 手机机型 | iphone12 | |
| 打包方式 | 云端 | |
更多关于uni-app plus.barcode.create 在ios中filters参数无法覆盖默认设置的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app plus.barcode.create 在ios中filters参数无法覆盖默认设置的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的iOS平台差异问题。在iOS系统中,plus.barcode.create的filters参数确实无法完全覆盖系统默认支持的条码类型,系统底层仍会识别QR、EAN等常见格式。而Android平台则可以严格限制只识别filters指定的类型。
临时解决方案:
-
在回调中手动过滤
在扫码成功回调中,通过code.type判断条码类型,仅处理CODE128类型的结果,其他类型直接忽略或提示不支持。barcode.onmarked = function(event) { if (event.type === 'code128') { // 处理CODE128条码 console.log('识别到CODE128:', event.code); } else { // 其他类型条码,可选择忽略或提示 console.log('忽略非CODE128条码:', event.type); // 可继续扫码 barcode.start(); } }; -
使用条件编译区分平台
由于Android平台可正常限制,iOS需要额外处理,建议使用条件编译:// #ifdef APP-PLUS var barcode = plus.barcode.create('barcode', [plus.barcode.CODE128], { // 其他配置 }); barcode.onmarked = function(event) { // #ifdef IOS if (event.type !== 'code128') { barcode.start(); // 继续扫描 return; } // #endif // 处理识别结果 console.log('识别成功:', event.code); }; // #endif

