web-dev-qa-db-fra.com

État de WKWebView sur Cordova iOS 9?

iOS 8 a introduit WKWebView, une vue Web modernisée pour iOS avec plus de fonctionnalités, en particulier notamment la compilation JIT pour le code Javascript qui améliore considérablement les performances.

Cependant WKWebView sur iOS 8 avait quelques bugs qui empêchaient Cordova de l'utiliser par défaut. AFAIK, il existe des plugins qui peuvent l'utiliser, mais ils disent tous "bêta", "incomplet" etc. Aussi, autant que je sache, iOS 9 corrige les bogues qui empêchaient Cordova de basculer par défaut sur WKWebView dans iOS 8.

Alors, quel est l'état de WKWebView dans Cordova sur iOS 9? Je n'arrive pas à trouver d'informations à ce sujet. Cordova utilise-t-il par défaut WKWebView sur iOS 9? Sinon, pourquoi pas, et peut-il être officiellement activé d'une autre manière?

41
AshleysBrain

Nouvelle édition: juin 2019

Apple n'a pas supprimé UIWebView dans la version bêta d'iOS 13, il semble donc qu'il puisse être utilisé au moins pendant une autre année.

Le plug-in Ionic WebView, à partir de la version 3.0.0, n'utilise plus de serveur Web, mais le WKURLSchemeHandler à la place, qui nécessitait de supprimer le support pour iOS 10 et les versions antérieures.

Rétroportez toujours la plupart des correctifs vers la branche 2.x qui a toujours le serveur Web pour ceux qui souhaitent prendre en charge iOS 10.

WKWebView n'a pas été intégré dans cordova-ios 5.0.0, un plugin est toujours requis pour l'utiliser. Devrait être là pour la version 6.0.0.

Et maintenant il y a Ionic Condensateur disponible, une alternative à Apache Cordova qui a été construite avec le WKWebView depuis le début. Il a son propre ensemble de plugins, mais il est également compatible avec la plupart des plugins Cordova. https://capacitor.ionicframework.com/

Ancienne édition: août 2018

Apple a déprécié UIWebView dans iOS 12 et le supprimera probablement dans iOS 13.

Apache Cordova a annoncé qu'il intégrera le cordova-plugin-wkwebview-engine en cordova-ios dans la prochaine version majeure (5.x.x), mais UIWebView fonctionnera toujours et sera la version par défaut. De plus, vous pourrez basculer entre les deux lors de l'exécution pour tester facilement votre application. Dans une version future, il supprimera tout le code UIWebView et le WKWebView sera la seule option.

Mais cordova-plugin-wkwebview-engine ont encore beaucoup de problèmes. Je recommande toujours d'utiliser cordova-plugin-ionic-webview car l'utilisation de GCDWebServer résout la plupart des problèmes de WKWebView.

Nouvelle édition: novembre 2017

L'équipe ionique a lancé un nouveau plugin WKWebView qui n'est plus un fork de celui de Cordova et utilise GCDWebServer en interne et surmonte la plupart des problèmes connus du plugin Cordova.

Nouvelle édition: 24 août 2016

Mis à jour juste pour ajouter un fork du plugin WKWebView d'Apache créé par l'équipe du framework ionic qui ajoute quelques améliorations au plugin.

https://github.com/driftyco/cordova-plugin-wkwebview-engine

Les améliorations arriveront probablement bientôt sur le plugin principal, mais vous pouvez jeter un œil et tester la fourche ionic maintenant.

Nouvelle édition: 9 décembre 2015

cordova ios 4.0.0 a été publié et la version 1.0. de cordova-plugin-wkwebview-engine

Pour l'essayer:

cordova create wkwvtest my.project.id wkwvtest
cd wkwvtest
cordova platform add ios@4
cordova plugin add cordova-plugin-wkwebview-engine

Comme je l'ai déjà dit, cordova-plugin-wkwebview-engine ne prend en charge que iOS 9, sur iOS 8, il utilisera UIWebView et a certains problèmes connus

Si vous souhaitez également prendre en charge iOS 8, vous pouvez utiliser le wkwebview-engine-localhost (experimental) ou cordova-plugin-wkwebview de Telerik, les deux utilisent un local serveur Web

https://github.com/Apache/cordova-plugins/tree/master/wkwebview-engine-localhost

ANCIEN MESSAGE:

Vous pouvez utiliser WKWebView avec cordova en utilisant les plugins WKWebView disponibles.

Le problème que vous mentionnez est que WKWebView ne peut pas charger de fichiers locaux, les plugins utilisent donc un serveur Web local pour contourner le problème.

Il y en a comme celui-ci de telerik https://github.com/Telerik-Verified-Plugins/WKWebView (avec le serveur Web intégré) ou l'officiel de l'équipe cordova https://github.com/Apache/cordova-plugins/tree/master/wkwebview-engine-localhost (avec le serveur Web comme plugin de dépendance)

Comme le bogue que vous mentionnez est corrigé sur iOS 9, le plug-in Cordova actuel (compatible avec iOS 8 et iOS 9, utilisant le serveur Web) a été renommé wkwebview-engine-localhost, et le nom actuel cordova-plugin-wkwebview-engine sera utilisé pour un nouveau plugin qui prendra en charge iOS 9 uniquement et n'utilisera pas le serveur Web

Vous pouvez voir les problèmes pour suivre les progrès ici

https://issues.Apache.org/jira/browse/CB-9566

https://issues.Apache.org/jira/browse/CB-9567

EDIT: J'apporte des nouvelles https://shazronatadobe.wordpress.com/2015/09/09/Apache-cordova-ios-4-0-0-and-wkwebview-support/

Prise en charge de WKWebView

Le plugin cordova-plugin-wkwebview-engine sera uniquement iOS 9 et ce sera un plugin de base. Le développement de ce plugin mis à jour est toujours en cours. Apple a corrigé le bogue où nous ne pouvions pas charger de documents à partir de file: // urls, et il s'agit uniquement d'iOS 9. Sur les appareils non iOS 9, cordova-ios reviendra à l'utilisation du UIWebView.

L'ancienne version de ce plugin utilisait un serveur Web local pour charger votre document principal. Cet ancien plugin peut être utilisé là où vous souhaitez utiliser WKWebView dans les déploiements iOS 8 et iOS 9, mais le plugin restera une expérience cordova-labs. Ce plugin a un travail de refactorisation à faire.

56
jcesarmobile