2013-07-09 1 views
1

Existe-t-il une solution au problème lorsque, au moment de fermer AppBrowser avant de charger la page, l'application crash ios?InAppBrowser dans Cordova 2.7.0

Cordova version 2.7.0

Le inAppBrowser provoque des applications de ios de tomber en panne (fermer sans avertissement) si le bouton « Terminé » est cliqué dans une seconde ou deux d'ouverture (bien sûr pas à chaque fois - mais 3 sur de 4 essais habituellement - sur iphone et ipad).

Nous avons essayé d'encapsuler tous les javascript pertinents dans les blocs try/catch et ils ne sont pas renvoyés. Nous avons également essayé d'enregistrer un écouteur d'événement sur l'événement d'erreur inAppBrowser (également non déclenché).

Cela ressemble à un problème de PhoneGapBuild provoquant un crash ios.

Toute aide et tout commentaire sont très appréciés.

Répondre

0

Je viens de signaler le même problème à Cordova au https://issues.apache.org/jira/browse/CB-4995 et suggéré une solution possible. C'est la solution que nous avons utilisée pour notre application iOS Cordova 2.8.15. En résumé, l'erreur se produit parce que self.inAppBrowserViewController sous webViewDidFinishLoad dans CDVInAppBrowser.m est nul si webViewDidFinishLoad est appelé un peu trop tard en raison de la fermeture rapide du navigateur, qui appelle browserExit Cela supprime self.inAppBrowserViewController au préalable. Nous avons fixé la question par self.inAppBrowserViewController-vérification nul dans les webViewDidFinishLoad et en utilisant cette coutume patché CDVInAppBrowser.m

+0

Le problème est officiellement fixé pour CB-4995 à Cordoue, et il peut être consulté à [https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-inappbrowser .git; a = commit; h = aa81c326] (https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-inappbrowser.git;a=commit;h=aa81c326). – hyong

0

Il y a une solution décrite à http://community.phonegap.com/nitobi/topics/inappbrowser_causes_ios_apps_to_crash_on_close-15h8ot qui a fonctionné pour moi.

Il s'agit d'ajouter un écouteur d'événement à l'événement "exit" et d'appeler la méthode close() lorsque cet événement est déclenché.

Je ne sais pas pourquoi cela fonctionne, mais cela a été fait pour moi.

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