Cordova 2.7.0中的InAppBrowser

时间:2013-07-09 07:29:10

标签: crash cordova inappbrowser

在加载页面make crash ios app之前关闭inAppBrowser时是否有问题的解决方案?

Cordova版本2.7.0

inAppBrowser会导致ios应用程序崩溃(在没有警告的情况下关闭)如果在开启的一两秒内点击“完成”按钮(当然不是每次都有 - 但通常是4次尝试中的3次 - 在iphone和ipad上)。

我们已尝试在try / catch块中包装所有相关的javascript,但它们不会被触发。我们还尝试在inAppBrowser错误事件中注册一个事件监听器(也没有触发)。

看起来像PhoneGapBuild问题导致ios崩溃。

非常感谢所有和任何帮助/反馈。

2 个答案:

答案 0 :(得分:0)

我刚刚在https://issues.apache.org/jira/browse/CB-4995向Cordova报告了同样的问题,并提出了可能的解决方案。这是我们用于Cordova 2.8.15 iOS应用程序的解决方案。

您可以在上面的链接中看到更多详细信息,但总的来说,崩溃发生是因为CDVInAppBrowser.m中的webViewDidFinishLoad下的self.inAppBrowserViewController为nil,如果由于浏览器的快速关闭而调用webViewDidFinishLoad太迟了,这会调用browserExit预先nils out self.inAppBrowserViewController。我们通过在webViewDidFinishLoad中使用nil-checking self.inAppBrowserViewController并使用此自定义修补的CDVInAppBrowser.m来修复此问题

答案 1 :(得分:0)

http://community.phonegap.com/nitobi/topics/inappbrowser_causes_ios_apps_to_crash_on_close-15h8ot描述的解决方案对我有用。

它涉及向“exit”事件添加事件侦听器,并在触发此事件时调用close()方法。

我不知道为什么会这样,但它确实适合我。

var inAppBrowser = window.open("http://google.com","_blank");
inAppBrowser.addEventListener("exit", function(event) {
    inAppBrowser.close();
});