iOS使用WKWebViewEngine加载页面,调用cordova插件方法总是在app退到后台才执行

最近,协助其他项目开发,要打包一个使用angularjs+bootstrap框架开发的H5应用,因为该项目开发人员只只有安卓的环境,所以,提供的工程,就只有一个www的内容页面包文件

所以只能从其他项目拷贝一个原生的iOS集成H5的项目,把www内容拷贝进去,从此,问题就一个一个的出现了

第一个:使用cordova-plugin-geolocation插件不能获取到定位的经纬度

    经过排查,是因为提供的www包中,只有安卓版的插件,并没有iOS版的插件,所以把iOS的插件文件拷贝进来配置好,就ok了

第二个:(最最诡异的问题)

    页面调用扫码功能,集成的插件是phonegap-plugin-barcodescanner,最开始,工程使用UIWebViewEngine来加载页面,调用插件也正常,后来,因为页面其他布局的问题,需要换成WKWebViewEngine 容器来加载,但是扫码功能就不能用了,点了没反应,或者是弹出扫码失败,这是咋回事儿呢,暴力点点点,突然app切到后台,再回到前台,扫码页面竟然出来了,傻眼。。。app只有退到后台才会触发cordova 插件扫码的方法,测试了好几遍,确实是这个现象,难道是因为UIWebViewEngine 和WKWebViewEngine对cordova 插件的兼容性有差异么,我尝试着给插件源码使用 ,self.delegate.runInBackground{} 代码块包裹代码,还有尝试js在后台线程执行扫码的方法,但是还是不行,最终决定换扫码插件。。。但是还有别的问题,先处理别的吧

第三个问题: 换成WKWebViewEngine以后,地图出不来了。。。又是开始暴力测试,结果又出现了那一幕,app退到后台,再回到前台,地图出来了;我又测试了调用照相机的插件,一样的现象, 那应该就不是插件的问题了,而是WKWebViewEngine 的问题了。。。

然后,我按照新增WKWebViewEngine 插件的方法,重新安装了插件,然后修改对应的配置,发现,iOS原生项目中,竟然是没有WKWebViewEngine 的插件代码,配置好以后,竟然上面所有的问题都解决了......

为了这个问题折腾了两天,总算可以长舒一口气了。。。

下面是排查方法,

在一个ionic项目中,通过cordova pluginaddcordova-plugin-wkwebview-engine 命令添加wkWebViewEngine 插件

将项目中生成的iOS 平台项目下的 config.xml ,cordova-plugin.js, www/plugins 目录下的插件文件对应着配置到 iOS原生项目中就可以了

你可能感兴趣的:(iOS使用WKWebViewEngine加载页面,调用cordova插件方法总是在app退到后台才执行)