2013-07-09 3 views
1

Есть ли решение проблемы, когда на момент закрытия inAppBrowser перед загрузкой страницы произошло приложение iOS с крахом?InAppBrowser в Кордове 2.7.0

Кордова Версия 2.7.0

inAppBrowser вызывает IOS приложение к сбою (закрыть без предупреждения), если кнопка «Готово» нажата в течение секунды или два отверстия (конечно, не каждый раз - но 3 из из 4 попыток обычно - на iphone и ipad).

Мы попробовали обернуть все соответствующие javascript в блоках try/catch, и они не уволены. Мы также попытались зарегистрировать прослушиватель событий в событии ошибки inAppBrowser (также не уволен).

Это похоже на проблему PhoneGapBuild, вызывающую крушение ios.

Все и любая помощь/обратная связь очень ценятся.

ответ

0

Я только что сообщил об этой же проблеме Кордове по телефону https://issues.apache.org/jira/browse/CB-4995 и предложил в ней возможное решение. Это решение, которое мы использовали для нашего приложения ICOS от Cordova 2.8.15.

Вы можете получить более подробную информацию по ссылке выше, но в целом, авария происходит потому, что self.inAppBrowserViewController под webViewDidFinishLoad в CDVInAppBrowser.m равна нулю, если webViewDidFinishLoad называется слишком поздно из-за быстрого закрытия браузера, который вызывает browserExit что nils вне self.inAppBrowserViewController заранее. Мы исправили проблему, ноль проверки self.inAppBrowserViewController внутри webViewDidFinishLoad и используя этот обычай заплаток CDVInAppBrowser.m

+0

Проблема официально фиксируется для CB-4995 в Кордове, и он может быть рассмотрен в [https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-inappbrowser .git; а = фиксации; ч = aa81c326] (https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-inappbrowser.git;a=commit;h=aa81c326). – hyong

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(); 
});