H5+ plus.barcode.Barcode 扫码控件 返回数据错误

发布时间 2023-11-23 15:54:53作者: 孤独的洋葱头

创建扫码控件 扫描比较复杂的条形码时返回数据错误, 扫到的总是一些不相干的数据, 极小概率可以扫到正确的数据, 代码中已经配置 条码类型过滤器, filters, 代码和条码如下

scan = new plus.barcode.Barcode('bcid',[
    "plus.barcode.CODE128",
    "plus.barcode.QR"
]);

原因分析: 期初以为是配置的码制问题, 怀疑码不是code128 的, 看了下内容, 除了 code128, 只能是code39 才支持这种格式的内容, 改了发现还是不行, 好像没啥用; 也down 了官方demo 下来, 配置这个filters 也是一样的结果;

经过多次查看官方示例时发现, 传入的filters 的内容格式似乎不太对, 人家的示例传入的filters 是没有引号的!!!

解决办法: 将filters 的引号去掉;

scan = new plus.barcode.Barcode('bcid',[
    plus.barcode.CODE128,
    plus.barcode.QR,
    // plus.barcode.EAN13,
    // plus.barcode.EAN8,
    // plus.barcode.AZTEC,
    // plus.barcode.DATAMATRIX,
    // plus.barcode.UPCA,
    // plus.barcode.UPCE,
    // plus.barcode.CODABAR,
    // plus.barcode.CODE39,
    // plus.barcode.CODE93,
    // plus.barcode.ITF,
    // plus.barcode.PDF417,
])

在 联想小新 平板电脑上选择相册图片进行上传时, 打开相册瞬间 应用会自动重启, 相册倒是有打开, 不过应用重启了, 导致业务也完成不了, debug 没有任何错误, gallery.pick 成功和失败的回调都没有进入;

原因分析: 应用采用的强制横屏模式, 在 manifest.json 中 是像如下配置的, 而平板系统的横竖屏设置是锁定竖屏的, 可能应用在跳转到系统相册界面时突然从横屏转向竖屏是某些冲突导致, 至于更深层的原因暂时还没有能力排查;

"screenOrientation" : [ "landscape-primary" ],
"plus": {
    "distribute" : {
        "orientation" : [ "portrait-primary", "portrait-secondary" ], 
    }
}

临时解决办法: 将平板电脑的屏幕方向设置为横屏, 并将其锁定;

UniApp 常用方法

// 强制横屏
plus.screen.lockOrientation('landscape-primary');  

// 获取设备信息
uni.getSystemInfo({
    success: function (res) {
        self.sysInfo = res
    }
})

// 网络状态发生变化
uni.onNetworkStatusChange(function(res) {
    console.log('网络状态发生变化', res)
    if(res.isConnected) {
        uni.hideToast()
        self.reload()
    } else {
        uni.showToast({
            icon: 'error',
            title: '网络断开, 请检查!',
            duration: 9999
        })
    }
});

ios 正则零宽断言兼容问题

问题描述:

ios safari 浏览器中报错, 导致界面渲染异常

SyntaxError: Invalid regular expression: invalid group specifier name

解决办法:

  1. 升级系统版本;
  2. 修改正则;