Cordova iOS – InAppBrowser始终处于首要问题

我正在创建一个Apache Cordova应用程序。 我添加了InAppBrowser插件和条形码扫描程序插件,该插件是通过跨浏览器通信从InAppBrowser内部打开的页面调用的。 它在Android中运行得非常好。 但是当在iOS中运行时,InAppBrowser就像一个模态弹出窗口,并且在InAppBrowser关闭/关闭之前不会让条形码扫描器出现。

我已经确认条码扫描器即使在后台也能正常工作,但由于InAppBrowser始终位于顶部,因此它不会出现。

我想可能会有一个解决方法来给条形码扫描器插件最大的z-index,但我无法弄清楚如何。

我也试图隐藏InAppBrowser,但它在iOS中不起作用。

cordova.InAppBrowser.hide(); 

我的想法是扩展我的网站,以便在从其移动应用程序运行时使用本机function。

我确实有同样的问题。 https://issues.apache.org/jira/browse/CB-12586已经存在问题,这有助于我解决它。

该问题的所有者通过更改iOS文件夹中InAppBrowser插件的hide()方法的代码找到了解决方案(例如,YourApp / platforms / ios / YourApp / Plugins / cordova-plugin-inappbrowser / CDVInAppBrowser.m)。 应用建议的解决方案后,我的隐藏方法如下所示:

 - (void)hide:(CDVInvokedUrlCommand*)command { if (self.inAppBrowserViewController == nil) { NSLog(@"Tried to hide IAB after it was closed."); return; } if (_previousStatusBarStyle == -1) { NSLog(@"Tried to hide IAB while already hidden"); return; } _previousStatusBarStyle = [UIApplication sharedApplication].statusBarStyle; __weak CDVInAppBrowser* weakSelf = self; // Run later to avoid the "took a long time" log message. dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ if (weakSelf.inAppBrowserViewController != nil) { _previousStatusBarStyle = -1; [weakSelf.inAppBrowserViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]; } }); } 

在下一个“cordova build”之后,hide方法对我有用。 如果您找到了更好的解决方案,请告诉我。

我忘了在这里添加答案。 但是我第二天就修好了。 修复非常简单,我将隐藏和显示InAppBrowser的方法更改为以下内容:

 - (void)hide:(CDVInvokedUrlCommand*)command { self.inAppBrowserViewController.viewController.hidden = YES; } - (void)hide:(CDVInvokedUrlCommand*)command { self.inAppBrowserViewController.viewController.hidden = NO; 

}