Les composants WebView sur iOS
UIWebView
WKWebView
Samuel Bezerra Gomes
vs
Base
UIWebView
WKWebView
- Existant depuis la version 2.0 d'iOS
- Composant déjà existant dans l'UIKit
- Implementation directe avec Interface Builder
- Vieux méthodes pratiques disponibles comme "ScalePageToFit"
- Existant depuis la version 8.0 d'iOS
- Composant à part dans la bibliothèque WebKit
- Implementation manuelle sans l'Interface Builder
- Solution alternative existante avec WKUserScript
Performance
UIWebView
WKWebView
- UIWebView tourne sur le même processus de l'application lancé
- Benchmark :
- WKWebView tourne sur un processus séparé pour avoir un meilleur rendu pour des optimisations Javascript
- Benchmark :


- Usage du CPU : 30 à 50 %
- Usage du CPU : 2 à 8 %
- Mémoire : 7 Mo
- Mémoire : 40 Mo
- Performance WebGL : 25 % de CPU pour renderiser des particules à 60fps
- Performance WebGL : 90 % de CPU pour renderiser des particules à 60fps
Stockage
UIWebView
WKWebView
- Support à IndexedDB : Non
- Support à ArrayBuffers : Non
- Support au stockage d'objets Blob : Non
- Support à IndexedDB : Oui
- Support à ArrayBuffers : Oui
- Support au stockage d'objets Blob : Non
Communication
UIWebView
WKWebView
- Injection simple des codes JS
- Support à des messages : via un prefix comme "app_link" uniquement
- Méthodes simples de navigation
- Injection complètement configuré en passant la source JS, le moment de l'injection si au debut ou à la fin du chargement de la page entre autres options.
- Un meilleur suivi de la navigation avec WKNavigationDelegate (Action / Response)
- Support à des messages integré directement avec WKScriptMessageHandler
Conclusion
Le composant UIWebView est plus indiqué à l'affichage des pages web sans un besoin majeur dans le suivi de navigation ni dans la communication entre la page et l'interface native, en étant plus pratique à implementer une fois qu'il est integré directement dans l'Interface Builder.
Le composant WKWebView est plus indiqué à l'affichage des pages web qui ont besoin d'un suivi complet de navigation, chargement, injections JS, ainsi que des pages qui contiennent du contenu WebGL vu son coût niveau performance.
UIWebView vs WKWebView
By Samuel Bezerra Gomes
UIWebView vs WKWebView
- 828