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.createfilters参数确实无法完全覆盖系统默认支持的条码类型,系统底层仍会识别QR、EAN等常见格式。而Android平台则可以严格限制只识别filters指定的类型。

临时解决方案:

  1. 在回调中手动过滤
    在扫码成功回调中,通过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();
        }
    };
    
  2. 使用条件编译区分平台
    由于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
回到顶部