Une PWA peut accéder à certaines fonctionnalités dites natives.
Quels sont les capteurs et APIs accessibles depuis une PWA ?
Les capteurs accessibles depuis une PWA le sont aussi depuis une page web. Depuis l’arrivée de HTML5 au début des années 2010, de nombreuses APIs ont été mises à disposition : GPS, accéléromètre, gyroscope, …
Cependant, depuis quelques années, le nombre d’APIs ne cesse d’augmenter. Il est donc possible de faire les choses suivantes dans un navigateur aujourd’hui (liste non exhaustive) : Accès à des appareils Bluetooth / Lecture, écriture de tags NFC / Accès aux ports séries / Accès aux ports USB / Accès à la caméra / Accès à l’accéléromètre / Écriture et lecture de fichiers sur le système de fichiers / Accès aux notifications / Accès au gyroscope / Exécution de code “machine” grâce à WebAssembly / Accès au GPU / Accès à l’état du réseau / Picture in Picture / Accès aux contacts / Réalité augmentée
La liste peut être encore longue car elle est en constante évolution. Le “Project Fugu” est un projet actuellement porté par Google / Microsoft et Intel qui vise à mettre à disposition plus d’APIs “natives” dans les navigateurs.
Quel est le support des fonctionnalités “natives” dans les navigateurs ?
Le support de ces fonctionnalités est une chose complexe car en fonction de l’API, il faut tenir compte du navigateur ET la plateforme (Mac, Linux, Windows, Android, iOS).
Pour suivre l’implémentation des APIs, la source la plus fiable reste celle maintenue par chaque navigateur (cf liens en bas de page).
Cependant, en ce qui concerne iOS, il faut savoir que tous les navigateurs actuels ne sont en fait que des surcouches graphiques à Safari et son moteur webkit. Apple n’autorise pas d’autres navigateurs sur sa plateforme.
Quel est la différence avec une application native ?
Une application dite native aura accès à plus de fonctionnalités et de capteurs car le langage et les autorisations liées à la plateforme sont directement disponinbles. Toutefois, le code à produire pour accéder à ces fonctionnalités est lié à la plate-forme concernée. De plus, l’application pour offrir des fonctionnalités équivalentes quelle que soit la plate-forme devra inclure autant de versions de code qu’il y aura de plates-formes concernées.