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

问题描述 投票:0回答:1

我有一个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);

        });
    });
};

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

javascript ios cordova camera barcode-scanner
1个回答
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'" />
© www.soinside.com 2019 - 2024. All rights reserved.