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 条码扫描仪 - 相机屏幕未立即显示的主要内容,如果未能解决你的问题,请参考以下文章