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

Posted

技术标签:

【中文标题】IOS 上的 GMV 条码扫描仪 - 相机屏幕未立即显示【英文标题】:GMV Barcode scanner on IOS - Camera screen is not immediately displayed 【发布时间】:2019-12-05 14:30:10 【问题描述】:

我有一个安装了cordova-gmv-barcode-scanner 插件的cordova 应用程序。在 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】:

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

【讨论】:

以上是关于IOS 上的 GMV 条码扫描仪 - 相机屏幕未立即显示的主要内容,如果未能解决你的问题,请参考以下文章

iOS 中的 Phonegap 3.0 条码扫描器只能拾取二维码?

iOS 条码扫描器

iOS 上的 PhoneGap 条码扫描仪无响应

使用 Kivy 读取条码扫描器

PhoneGap 条码扫描器插件 - 相机关闭

Phonegap 条码扫描仪无法识别 windows phone 上的任何条码