IOS上的GMV条形码扫描仪-相机屏幕未立即显示

时间:2019-12-05 14:30:10

标签: javascript ios cordova camera barcode-scanner

我有一个cordova应用程序,其中安装了cordova-gmv-barcode-scanner插件。在Android上,一切正常,但是在IOS上运行时出现奇怪的错误。

我期望什么?

用户单击按钮后,我调用GMVBarcodeScanner.scan(..),并希望弹出摄像头窗口

发生了什么事?

用户单击按钮后,我调用MVBarcodeScanner.scan(..),但没有任何反应。但是,当我从顶部菜单向下滑动一点(只需与电池指示器所在的顶部菜单进行交互)时,相机窗口就会弹出,一切都会按预期进行。

我尝试了什么?

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

我尝试过玩deviceready事件。但是没有任何帮助。单击后立即触发了预期的事件,但是只有当我与顶部菜单进行交互时,摄像机才会出现。

从事件处理程序调用函数后,我曾尝试运行摘要循环(我使用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);

        });
    });
};

任何帮助将不胜感激。我的想法不多了。

1 个答案:

答案 0 :(得分:0)

我设法通过在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'" />