Dans un premier temps, qu’est ce qu’une webview et pourquoi ajouter des webviews dans une application mobile ? Une webview, c’est un composant disponible sous Android et iOS pour afficher, par exemple, de l’HTML ou l’URL d’un site web. Grâce à une webview, nous ne sommes donc pas obligé de créer une vue en langage natif.
Dans cet article, nous ne sommes pas là pour dire si c’est bien ou pas bien, même si souvent, c’est très déconseillé par Apple et Google et que les développeurs mobiles n’aiment pas ce composant. S’il a été créé, c’est qu’il peut être pratique, à condition de l’utiliser correctement.
[Mise à jour 6 janvier 2020]
Le composant UIWebView n’est plus supporté sur l’App Store, donc Apple refuse la majorité des applications hybrides type Cordova et Ionic.
Nous pouvons encore utiliser des pages web dans les applications natives, grâce au composant WKWebView.
N’hésitez pas à contacter notre développeur iOS pour plus d’informations application@homework.family
Pourquoi utiliser une webview dans une application mobile ?
La première utilité d’une webview reste la possibilité d’afficher une page web à distance dans son app. Le but est de ne pas re-développer une page qui existe déjà si on a un site internet fonctionnel. Grâce à des propriétés javascript, on peut masquer certaines zones de cette page web. Son premier but est donc le gain de temps et le gain d’argent, car une page web se créée une fois, à l’inverse de la vue en natif à développer pour Android et iOS.
On peut prendre par exemple une simple vue Informations, Mentions légales, ou encore Partenaires, qui n’a pas trop d’impact sur l’application, qu’elle soit en natif ou en HTML, puisqu’elle n’affiche que du texte ou des images. La vue sous forme de webview reste agréable et utile dans ce cas de figure.
Exemple Android
1 2 3 4 5 6 7 | WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("https://www.homework.family"); |
Exemple iOS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import UIKit import WebKit class ViewController: UIViewController, WKUIDelegate { var webView: WKWebView! override func loadView() { let webConfiguration = WKWebViewConfiguration() webView = WKWebView(frame: .zero, configuration: webConfiguration) webView.uiDelegate = self view = webView } override func viewDidLoad() { super.viewDidLoad() let myURL = URL(string:"https://www.homework.family") let myRequest = URLRequest(url: myURL!) webView.load(myRequest) }} |
Pourquoi ne faut-il pas utiliser une webview dans une application mobile ?
Si utiliser une webview peut être utile, il ne faut pas en abuser. Une webview sera toujours plus longue d’exécution qu’une page native. Votre application sera donc plus lente et deviendra handicapante si l’utilisation est récursive. Pour ma part, je vous déconseille fortement d’avoir une application 100% webview. Pourquoi ? Car d’une part, votre application n’aura aucune vue disponible hors ligne (par exemple, votre menu, chose qui n’a pas besoin d’être rappelée dans chaque vue). Mais surtout, parce qu’Apple demande une application ayant une valeur ajoutée. Ainsi, si votre appli n’est rien d’autre que votre site web, elle sera certainement refusée.
Alors du coup, les webviews ?
En conclusion, l’utilisation de webviews vous fera gagner du temps, à condition d’avoir au moins une structure native et de n’avoir que des pages d’informations statiques. Autrement, les webviews vous desserviront plus qu’autre chose.