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