IOS 上的 GMV 条码扫描器 - 相机屏幕不会立即显示

GMV Barcode scanner on IOS - Camera screen is not immediately displayed

我有一个安装了 cordova-gmv-barcode-scanner 插件的 cordova 应用程序。在 Android 上一切正常,但是当我在 IOS.

上 运行 时有一个奇怪的错误

我在期待什么?

用户点击按钮后,我调用 GMVBarcodeScanner.scan(..) 并期待相机 window 弹出

发生了什么事?

用户点击按钮后,我调用 MVBarcodeScanner.scan(..) 但没有任何反应。然而,当我从顶部菜单向下滑动一点时(只需与电池指示器所在的顶部菜单进行交互),相机 windows 弹出并且一切正常。

我尝试了什么?

我已经在 iphone 11、iphone 8、ipad 7 和真实设备 (iphone 7) 的模拟器上进行了测试。行为与所有模拟或真实设备完全相同。

我试过玩 deviceready 事件。但没有任何帮助。单击后事件按预期触发,但仅当我与顶部菜单交互时才会出现相机。

我在从事件处理程序调用函数后尝试了 运行ning 摘要循环(我使用 angularjs)但没有效果

我的JS

 $this.scanQrCode = function () {
    document.addEventListener("deviceready", function () {
        $window.plugins.GMVBarcodeScanner.scan({}, function (err, result) {

            if (err) {
                setRouteId(null);
                AppService.showAlert('No valid QR code.');
                return;
            }

            AppService.showMessage('Route was scanned.');
            var routeId = result.split(',')[0];
            var fqdn = result.split(',')[1];
            setRouteId(routeId, fqdn);

        });
    });
};

如有任何帮助,我们将不胜感激。我运行没主意了。

我通过在 CSP META 标签中允许 gap://ready 设法解决了我的问题。 Cordova 试图戳本机 api 但不能,因为它总是被安全策略阻止。

我变了

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />

<meta http-equiv="Content-Security-Policy" content="default-src 'self' gap://ready file://* *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />