{"id":6074,"date":"2016-12-21T14:15:35","date_gmt":"2016-12-21T13:15:35","guid":{"rendered":"http:\/\/blog.stephaniewalter.fr\/?p=6074"},"modified":"2019-05-20T22:14:39","modified_gmt":"2019-05-20T20:14:39","slug":"super-pouvoirs-navigateurs-mobiles","status":"publish","type":"post","link":"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/","title":{"rendered":"Les super pouvoirs des navigateurs mobiles"},"content":{"rendered":"<div class=\"juiz-outdated-message jodpm-top\">Ce contenu a \u00e9t\u00e9 r\u00e9dig\u00e9 il y a 9 ans. Il se peut qu'il ne soit plus \u00e0 jour.<\/div><p>Cet article est une traduction de\u00a0<a href=\"https:\/\/www.smashingmagazine.com\/2016\/12\/the-not-so-secret-powers-of-the-mobile-browser\/\"><strong>The (not so) secret powers of the mobile browser <\/strong><\/a>publi\u00e9 sur Smashing Magazine et est une sorte de transcription un peu plus long de ma conf\u00e9rence<a href=\"https:\/\/stephaniewalter.design\/blog\/forget-apps-future-mobile-browser-nightlybuild-2016-conference\/\"> Forget about apps, could the future be in the mobile browser?<\/a><\/p>\n<p>En 2009, Apple nous vendait ses t\u00e9l\u00e9phones avec un slogan simple : \u201cThere\u2019s an app for that\u201d (il y a une application pour \u00e7a). Et bien s\u00fbr nous y avons cru. Comment aurait-il pu en \u00eatre autrement ? Mais de l\u2019eau a coul\u00e9 sous les ponts depuis 2009. Nos utilisatrices mobiles ont acquis en maturit\u00e9, et lorsque vient le choix entre t\u00e9l\u00e9charger et installer votre grosse application e-commerce ou conserver de l\u2019espace de stockage pour prendre plus de photos, l&rsquo;int\u00e9r\u00eat envers l\u2019application commence \u00e0 \u00eatre remis en question. Les navigateurs ont de leur c\u00f4t\u00e9 pendant ce temps \u00e9galement bien \u00e9volu\u00e9 et permettent le support de plus en plus de fonctionnalit\u00e9s r\u00e9serv\u00e9es jusque-l\u00e0 aux applications natives gr\u00e2ce \u00e0 de nouvelles APIs.<\/p>\n<p>Nous pouvons d\u00e9sormais acc\u00e9der directement depuis le navigateur \u00e0 l\u2019appareil photo, prendre des vid\u00e9os, capturer de l\u2019audio et utiliser WebRTC pour construire un syst\u00e8me de messagerie dans le navigateur sans avoir besoin d\u2019installer le moindre plugin. Il est \u00e9galement possible de construire des Progressive Web Apps qui, gr\u00e2ces \u00e0 une ic\u00f4ne de lancement, des notifications ou encore des fonctionnalit\u00e9s disponibles hors connexion, etc., permettront de reproduire une exp\u00e9rience proche de ce qu&rsquo;offraient jusque-l\u00e0 les applications natives. Et pourquoi s\u2019arr\u00eater en si bon chemin ? Il est possible d\u2019aller bien au-del\u00e0 du Responsive Web Design et construire des sites qui s\u2019adapteront auto-magiquement aux besoins et contexte des utilisatrices en utilisant de la g\u00e9olocalisation, en d\u00e9tectant le niveau de batterie et la lumi\u00e8re ambiante, en tirant partie du Bluetooth et de ce que Google appelle The Physical Web.<\/p>\n<p><em>Pour nous aider \u00e0 plonger dans ce nouveau monde et ces nouvelles (et pas si nouvelles) fonctionnalit\u00e9s, nous guider dans notre voyage dans le monde de \u201cTout est possible dans un navigateur mobile\u201d, je vais illustrer cet article avec des exemples fictifs mais r\u00e9alistes. Ch\u00e8res lectrices et lecteurs, je vous pr\u00e9sente Zoe, mon utilisatrice. \u00c2g\u00e9e de 30 ans, elle est d\u00e9veloppeuse dans un futur pas tr\u00e8s \u00e9loign\u00e9. Elle passe sa journ\u00e9e de boulot sur un ordinateur et ne souhaite pas en avoir un \u00e0 la maison. Elle utilise donc son Smartphone comme principal moyen d\u2019acc\u00e8s \u00e0 internet.<\/em><\/p>\n<h2>Acc\u00e9der et utiliser des images, de la vid\u00e9o et de l\u2019audio directement dans le navigateur<\/h2>\n<h3>Un syst\u00e8me de conf\u00e9rence audio et vid\u00e9o dans le navigateur avec WebRTC.<\/h3>\n<p><em>Zoe a \u00e9t\u00e9 invit\u00e9e \u00e0 donner une conf\u00e9rence \u00e0 Super Conf, la plus grande conf\u00e9rence de son pays. Souvent les organisatrices souhaitent discuter un peu du sujet avant de vive voix. Au lieu d\u2019ajouter Zoe sur Skype comme la plupart des gens font g\u00e9n\u00e9ralement, les organisateurs de Super Conf lui envoient un lien vers un syst\u00e8me de visio-conf\u00e9rence en ligne :<a href=\"https:\/\/apprtc.appspot.com\/\"> Apprtc<\/a><\/em><\/p>\n<p><em>Zoe entre le num\u00e9ro de salle donn\u00e9 par les organisateurs. Le navigateur demande alors la permission d\u2019acc\u00e9der \u00e0 l\u2019appareil photo et au microphone, elle accepte et la voil\u00e0 connect\u00e9e directement avec son interlocutrice. Zoe n\u2019a rien eu besoin d\u2019installer, ni plugin, ni application. Tout s\u2019est directement pass\u00e9 dans le navigateur de mani\u00e8re totalement transparente ou presque pour elle.<\/em><\/p>\n<p><em>Zoe n\u2019a rien besoin d\u2019installer pour faire une visio conf\u00e9rence dans le navigateur :<\/em><img decoding=\"async\" class=\"aligncenter size-full wp-image-6073\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/webrtcchat.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/webrtcchat.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/webrtcchat-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Les applications natives demandent \u00e0 leurs utilisatrices toutes les permissions dont elles vont avoir besoin au moment de l\u2019installation. Le navigateur fonctionne diff\u00e9remment : les utilisatrices vont devoir autoriser l&rsquo;acc\u00e8s API par API (donc fonctionnalit\u00e9 par fonctionnalit\u00e9).<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6064\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/ptop.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/ptop.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/ptop-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Et donc, comment \u00e7a fonctionne ? En utilisant<a href=\"http:\/\/w3c.github.io\/webrtc-pc\/\"> WebRTC<\/a>, il est possible d\u2019ouvrir un canal de communication directe et en temps r\u00e9el (Peer to Peer) entre deux clients. Ensuite vous pouvez envoyer du son, de la vid\u00e9o ou m\u00eame des donn\u00e9es entre les deux clients.<\/p>\n<p>C\u2019est plut\u00f4t puissant mais pour le moment<a href=\"http:\/\/caniuse.com\/#feat=rtcpeerconnection\"> uniquement support\u00e9 dans Firefox et Chrome et en cours de d\u00e9veloppement pour MS Edge et Safari<\/a>. Il vous faudra \u00e9galement utiliser l\u2019API<a href=\"https:\/\/www.w3.org\/TR\/mediacapture-streams\/\"> getUserMedia\/Stream<\/a> (<a href=\"http:\/\/caniuse.com\/#feat=stream\">pas support\u00e9e sous IE et Safari<\/a>) pour avoir acc\u00e8s aux flux audio et vid\u00e9o de l\u2019appareil.<\/p>\n<p>Ce genre de technologies pourrait servir \u00e0 re-cr\u00e9er une web app Google Hangout ou un Facebook Messenger directement dans le navigateur. Pour \u00e9galer l\u2019application, il manquerait cependant l\u2019acc\u00e8s au r\u00e9pertoire t\u00e9l\u00e9phonique de l\u2019utilisatrice. Pour le moment aucune API ne permet h\u00e9las cela.<\/p>\n<h3>Ajouter une photo de profil directement depuis son appareil photo<\/h3>\n<p><em>Apr\u00e8s avoir discut\u00e9 du sujet, les organisatrices demandent \u00e0 Zoe de bien pouvoir remplir son profil sur le site de la conf\u00e9rence. Elle se connecte, se rend sur son compte et trouve le bon endroit o\u00f9 le faire. Lorsqu\u2019elle appuie sur le bouton \u201cupdate my picture\u201d, elle peut choisir entre prendre une photo directement avec son t\u00e9l\u00e9phone ou acc\u00e9der \u00e0 ses documents pour utiliser une photo d\u00e9j\u00e0 stock\u00e9e. Elle choisit la premi\u00e8re option et remplit son profile.<\/em><\/p>\n<p><em>Zoe choisit de prendre la photo directement avec son t\u00e9l\u00e9phone :<\/em><img decoding=\"async\" class=\"aligncenter size-full wp-image-6096\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/media-upload-large-opt.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/media-upload-large-opt.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/media-upload-large-opt-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><a href=\"http:\/\/www.wufoo.com\/html5\/attributes\/20-accept.html\">L\u2019input HTML5 de type file accepte d\u00e9sormais un attribute appel\u00e9 \u201caccept\u201d<\/a> dans lequel on peut lister les diff\u00e9rents types de fichiers accept\u00e9s en les s\u00e9parant par des virgules. Sur mobile, ce champ ouvre une bo\u00eete de dialogue native qui permet \u00e0 l\u2019utilisatrice de choisir la source du contenu (documents) ou acc\u00e9der directement \u00e0 l\u2019appareil photo :<br \/>\n<code lang=\"html\"> <input id=\"image\" accept=\"image\/*\" name=\"image\" type=\"file\" \/><\/code><\/p>\n<p>Si vous souhaitez \u00e9viter la bo\u00eete de dialogue et ouvrir directement l\u2019appareil de photo il suffit d\u2019ajouter l\u2019attribut capture comme ceci :<\/p>\n<p><code lang=\"html\"> <input id=\"capture\" accept=\"image\/*\" name=\"capture\" type=\"file\" \/> <\/code><\/p>\n<p>Et \u00e7a fonctionne aussi avec la capture de vid\u00e9o ou de son :<\/p>\n<p><code lang=\"html\"><input id=\"video\" accept=\"video\/*\" name=\"video\" type=\"file\" \/><\/code><\/p>\n<p><code lang=\"html\"><input id=\"audio\" accept=\"audio\/*\" name=\"audio\" type=\"file\" \/><\/code><\/p>\n<p>Si vous voulez vous amuser j\u2019ai fait<a href=\"http:\/\/codepen.io\/stephaniewalter\/full\/xZoxOb\/\"> une petite d\u00e9mo des diff\u00e9rents cas possibles<\/a>.<\/p>\n<p>Un nouveau monde des possibles s\u2019ouvre \u00e0 nous maintenant que l\u2019on peut acc\u00e9der aux m\u00e9dias (vid\u00e9os, images et audio) directement dans le navigateur. On peut imaginer changer directement son avatar sur n\u2019importe quel site Responsive ou r\u00e9seau social en prenant directement une photo depuis le navigateur, prendre des photos ou des vid\u00e9os depuis le navigateur pour les mettre dans sa timeline. Plus besoin de prendre en avance les photos de son v\u00e9lo et les transf\u00e9rer sur son pc pour le vendre sur Leboncoin, il suffirait de les prendre \u00e0 la vol\u00e9e directement dans le navigateur au fur et \u00e0 mesure de la compl\u00e9tion de l\u2019annonce.<\/p>\n<h3>S\u2019amuser avec les champs de m\u00e9dias<\/h3>\n<p>Si on va un cran plus loin, on peut imaginer combiner un champ qui prend une photo avec des filtres CSS3 pour recr\u00e9er Instagram directement dans le navigateur mobile.<\/p>\n<p>C\u2019est ce que Una s\u2019est amus\u00e9e \u00e0 faire avec\u00a0<a href=\"https:\/\/una.im\/CSSgram\/\">CSS gram<\/a>\u00a0:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-6056 alignnone\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/cssgram.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/cssgram.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/cssgram-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p><a href=\"https:\/\/guitar-tuner.appspot.com\/\">Guitar-tuner<\/a> est une web app plut\u00f4t fun qui demande l\u2019acc\u00e8s \u00e0 votre microphone pour ensuite vous aider \u00e0 accorder votre guitare. Le tout directement dans le navigateur sans la moindre applications \u00e0 installer. Plut\u00f4t pratique non ?<img decoding=\"async\" class=\"aligncenter size-full wp-image-6060\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/guitartuner.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/guitartuner.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/guitartuner-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<h2>Am\u00e9liorer son site de conf\u00e9rence pour en faire une Web App fonctionnelle<\/h2>\n<p>Dans cette seconde partie, je souhaite vous montrer comment il est possible de partir d\u2019un site responsive de conf\u00e9rence pour en am\u00e9liorer l\u2019exp\u00e9rience utilisateur et le transformer en Web App. Le concept d\u2019am\u00e9lioration est sans doute, du moins je le souhaite, assez familier pour vous. Je ne peux que vous encourager \u00e0 traiter ce qui va suivre comme des am\u00e9liorations progressives \u00e0 appliquer par-dessus un site existant d\u00e9j\u00e0 fonctionnel. Assurez-vous avant tout que les fonctionnalit\u00e9s principales qui font le c\u0153ur de votre site soient accessibles et fonctionnent sur le plus grand nombre d\u2019appareils possibles. Et ensuite seulement, am\u00e9liorez progressivement votre site avec une ic\u00f4ne de lancement, des notifications, du support hors ligne pour construire une exp\u00e9rience enrichie pour les navigateurs qui supportent ces APIs.<\/p>\n<h3>Installer et lancer son site en tant que Progressive Web App<\/h3>\n<p>Pour acc\u00e9der \u00e0 vos sites, la plupart des utilisatrices l\u2019ont soit d\u00e9j\u00e0 perdu au milieu d\u2019un oc\u00e9an de favoris plus ou moins bien rang\u00e9s et vont cliquer dessus, vont taper l\u2019url dans la barre du haut (s\u2019ils ont r\u00e9ussi \u00e0 la m\u00e9moriser ou viennent souvent) ou alors vont tout simplement le chercher dans leur moteur de recherche favoris. Un des gros avantages des applications natives est leur ic\u00f4ne de lancement : elles sont pr\u00e9sentes, l\u00e0, \u00e0 attendre sagement les utilisatrices sur l\u2019\u00e9cran d\u2019accueil du mobile, pr\u00eates \u00e0 \u00eatre lanc\u00e9es directement \u00e0 tout instant.<\/p>\n<h4>Un favicon sur l\u2019\u00e9cran d\u2019accueil<\/h4>\n<p>Imaginez maintenant que l\u2019on puisse faire la m\u00eame chose avec un site web et le lancer depuis l\u2019\u00e9cran d\u2019accueil de son mobile comme n\u2019importe quelle application native. Cette option est en faite d\u00e9j\u00e0 pr\u00e9sente dans la plupart des navigateurs mobiles modernes.<\/p>\n<p>Ajouter son site \u00e0 l\u2019\u00e9cran d\u2019accueil depuis Firefox, Safari et dans le menu de Chrome :<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-6050 size-full\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/add-to-home-button.jpg\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/add-to-home-button.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/add-to-home-button-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p style=\"text-align: left;\">Il vous faudra cependant cr\u00e9er plusieurs ic\u00f4nes de diff\u00e9rentes tailles pour satisfaire tous les navigateurs du march\u00e9, mais \u00e7a fonctionnera sur iOS, Android et Edge Mobile.<\/p>\n<p style=\"text-align: left;\">Le favicon de mon portfolio sur diff\u00e9rents OS mobiles :<img decoding=\"async\" class=\"aligncenter size-full wp-image-6061\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/launch-icon.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/launch-icon.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/launch-icon-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<h4>Chrome 42+ et sa banni\u00e8re d\u2019installation<\/h4>\n<p>Toutes les utilisatrices sont h\u00e9las loin de se douter que cette fonctionnalit\u00e9 existe dans leur navigateur. Pour les aider, Chrome propose depuis sa version 42 une petite banni\u00e8re en bas sobrement appel\u00e9e \u201c<a href=\"https:\/\/developers.google.com\/web\/updates\/2015\/03\/increasing-engagement-with-app-install-banners-in-chrome-for-android\">App Install Banner<\/a>\u201d. Elle permet aux utilisatrices d\u2019ajouter directement le site \u00e0 l\u2019\u00e9crans d\u2019accueil sans avoir \u00e0 aller chercher l\u2019option dans les menus du navigateur. Pour le moment la banni\u00e8re appara\u00eet si l\u2019utilisatrice a visit\u00e9 le site au moins deux fois avec une intervalle d\u2019au moins 5 minutes entre les visites. Mais Chrome affine souvent son algorithme donc c\u2019est susceptible de changer.<\/p>\n<p>En pr\u00e9parant sa conf\u00e9rence, Zoe visite plusieurs fois le site. Apr\u00e8s plusieurs visites, une petite banni\u00e8re appara\u00eet en bas de l\u2019\u00e9cran et lui permet d\u2019ajouter le site directement \u00e0 son \u00e9cran d\u2019accueil.<\/p>\n<p>Il y a \u00e9galement quelques crit\u00e8res techniques suppl\u00e9mentaires \u00e0 respecter pour avoir la banni\u00e8re sur son site parmi lesquels avoir un Service Worker d\u00e9clar\u00e9 et \u00eatre en HTTPS (j\u2019y reviendrai en d\u00e9tails dans la suite de l\u2019article) et avoir un fichier de manifest.json valide.<\/p>\n<h4>Le fichier de Manifest pour les Web Apps<\/h4>\n<p>Le<a href=\"https:\/\/w3c.github.io\/manifest\/\"> W3C Web App Manifest<\/a> est un simple fichier JSON qui va permettre \u00e0 la d\u00e9veloppeuse de contr\u00f4ler diff\u00e9rents aspects de sa Web App : son nom, l\u2019ic\u00f4ne de lancement, l\u2019\u00e9cran de lancement, la couleur du th\u00e8me et comment elle souhaite que son application soit lanc\u00e9e. Il existe<a href=\"https:\/\/manifest-validator.appspot.com\/\"> un outil en ligne qui vous permet de v\u00e9rifier la validit\u00e9 de votre manifest<\/a>. Une fois le fichier cr\u00e9\u00e9, il faudra encore<a href=\"https:\/\/developers.google.com\/web\/updates\/2014\/11\/Support-for-installable-web-apps-with-webapp-manifest-in-chrome-38-for-Android#telling_the_browser_about_your_manifest\"> le lier \u00e0 votre site web avec la balise link<\/a>.<br \/>\n<code lang=\"javascript\">{<br \/>\n\"short_name\" : \"SuperConf\",<br \/>\n\"name\": \"SuperConf, an amazing conference\",<br \/>\n\/\/ Defines a default URL to launch<br \/>\n\"start_url\": \"\/index.html\",<br \/>\n\"icons\": [<br \/>\n{<br \/>\n\"src\": \"launchicon.png\",<br \/>\n\"sizes\": \"96x96\",<br \/>\n\"type\": \"image\/png\"<br \/>\n}<br \/>\n\/\/ Other icons go here<br \/>\n],<br \/>\n\/\/ Launches the website without a URL bar<br \/>\n\"display\": \"standalone\",<br \/>\n\/\/ Provides a site-wide theme color<br \/>\n\"theme_color\": \"#fa9c00\",<br \/>\n\/\/ Provides a background color for the launch screen<br \/>\n\"background_color\":\"#ffffff\"<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Le Manifest est actuellement support\u00e9 sur<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Manifest\"> Android Webview, Opera Mobile et Chrome pour Android<\/a> ainsi que<a href=\"https:\/\/developers.google.com\/web\/updates\/2014\/11\/Support-for-installable-web-apps-with-webapp-manifest-in-chrome-38-for-Android#what_every_developer_should_do_today\"> sur Firefox<\/a>.<\/p>\n<h4>Ecran de lancement<\/h4>\n<p>A partir de Chrome 47, les navigateurs vont r\u00e9cup\u00e9rer dans le fichier de manifest <strong>theme_color<\/strong>, <strong>background_color<\/strong>, <strong>name<\/strong> et votre <strong>favicon<\/strong> pour g\u00e9n\u00e9rer automatiquement un \u00e9cran de lancement qui sera affich\u00e9 pendant que le site se charge.<\/p>\n<p><em>Quand la connexion de Zoe est lente, elle verra durant le chargement un \u00e9cran de lancement compos\u00e9 de l\u2019ic\u00f4ne du site de la conf\u00e9rence avec une barre orange en haut et un fond blanc :\u00a0<\/em><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6071\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/splashscreen.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/splashscreen.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/splashscreen-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<h4>Personnaliser le mode d\u2019affichage du site<\/h4>\n<p>Avec la<a href=\"https:\/\/w3c.github.io\/manifest\/#dfn-display-mode\"> propri\u00e9t\u00e9 display mode<\/a> du manifest, les d\u00e9veloppeuses peuvent choisir comment le site se lancera depuis l\u2019\u00e9cran d\u2019accueil :<\/p>\n<ul>\n<li><strong>\u00ab\u00a0display\u00a0\u00bb: \u00ab\u00a0standalone\u00a0\u00bb<\/strong> lance le site en plus grand \u00e9cran sans barre d\u2019URL en haut, un peu comme une application native (actuellement support\u00e9 dans Chrome et Opera)<\/li>\n<li><strong>\u00ab\u00a0display\u00a0\u00bb: \u00ab\u00a0browser\u00a0\u00bb<\/strong> lance le site de mani\u00e8re classique en laissant affich\u00e9e la barre d\u2019URL.<\/li>\n<\/ul>\n<p><strong>\u00ab\u00a0display\u00a0\u00bb: \u00ab\u00a0browser\u00a0\u00bb<\/strong> \u00e0 gauche VS <strong>\u00ab\u00a0display\u00a0\u00bb: \u00ab\u00a0standalone\u00a0\u00bb<\/strong> sur la partie droite pour deux diff\u00e9rents sites :<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6057\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/display-mode.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/display-mode.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/display-mode-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Les sp\u00e9cifications mentionnent \u00e9galement un mode plein \u00e9cran (fullscreen mode) qui devraient lancer le site dans l\u2019espace total disponible sur le mobile (donc sans doute en retirant les barres du syst\u00e8me \u00e9galement) et un mode minimal-ui qui devraient permettre \u00e0 l\u2019utilisatrice d&rsquo;acc\u00e9der \u00e0 un nombre minimal d\u2019\u00e9l\u00e9ments d\u2019interface mais aucun ne semble support\u00e9 nulle part pour le moment.<\/p>\n<p>Les d\u00e9veloppeuses peuvent \u00e9galement forcer l\u2019orientation entre <strong>\u00ab\u00a0orientation\u00a0\u00bb: \u00ab\u00a0landscape\u00a0\u00bb<\/strong> et <strong>\u00ab\u00a0orientation\u00a0\u00bb: \u00ab\u00a0portrait\u00a0\u00bb<\/strong>. Mais franchement, \u00e0 moins que vous soyez en train de construire un jeu vid\u00e9o, je vous conseille fortement de ne rien forcer et laisser l\u2019utilisatrice choisir en fonction de ses pr\u00e9f\u00e9rences.<\/p>\n<h4>Attention \u00e0 &lt;meta name=\u00a0\u00bbapple-mobile-web-app-capable\u201d&gt; sur iOS<\/h4>\n<p>Le display mode n\u2019est pas support\u00e9 sur iOS. Il existe cependant dans la documentation apple ceci :<a href=\"https:\/\/developer.apple.com\/library\/content\/documentation\/AppleApplications\/Reference\/SafariHTMLRef\/Articles\/MetaTags.html\"> &lt;meta name=\u00a0\u00bbapple-mobile-web-app-capable\u201d&gt;<\/a>. \u00c7a semble faire la m\u00eame chose, mais au final pas vraiment. Sur une Web App avec aucun lien en dur (par exemple du full Ajax) cette balise semble fonctionner comme le display mode et va lancer votre Web App dans une sorte de mode standalone. Mais si vous l\u2019utilisez sur un site avec des vrais liens, les choses se g\u00e2tent. Lorsque que le site est lanc\u00e9 depuis l\u2019ic\u00f4ne sur l\u2019\u00e9cran d\u2019accueil, il se lance bien en plein \u00e9cran. Par contre d\u00e8s que vous allez cliquer sur un lien, ce lien s&rsquo;ouvrira dans un nouvel onglet Safari. La seule fa\u00e7on d\u2019emp\u00eacher \u00e7a, est d\u2019utiliser du JavaScript pour passer par-dessus les \u00e9v\u00e9nements au clic \/ touch. Ceci n\u2019est pas forc\u00e9ment une super id\u00e9e.<\/p>\n<p>Le site s\u2019ouvre par d\u00e9faut en plein \u00e9cran quand il est lanc\u00e9 depuis l\u2019\u00e9cran d\u2019accueil, puis l\u2019URL ouvre un nouvel onglet :<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-6052\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/apple-launch.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/apple-launch.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/apple-launch-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<h4>Changer la couleur de la barre d\u2019URL<\/h4>\n<p>Pour amuser les utilisatrices ou simplement pour des questions de branding, vous pouvez changer la couleur de la barre d\u2019URL de votre navigateur. Pour cela il faut ajouter le code suivant \u00e0 chaque page :<\/p>\n<p>Le site fran\u00e7ais Archiduchesse utilise de fa\u00e7on tr\u00e8s astucieuse cette fonctionnalit\u00e9. Leur succ\u00e8s est bas\u00e9 sur la vente d\u2019un seul produit, des chaussettes, d\u00e9clin\u00e9es en diff\u00e9rents coloris. La couleur de la barre d\u2019URL change et correspond ton sur ton \u00e0 chaque coloris de chaussette disponible. C\u2019est un tout petit d\u00e9tail, certes, mais il contribue \u00e0 une exp\u00e9rience globale un peu plus sympa pour les utilisatrices du site sur Android.\u00a0La couleur de la barre d\u2019URL est coordonn\u00e9e \u00e0 la couleur des chaussettes :<\/p>\n<p><iframe loading=\"lazy\" title=\"Archiduchesse tab color\" src=\"https:\/\/player.vimeo.com\/video\/188562476?dnt=1&amp;app_id=122963\" width=\"425\" height=\"750\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\"><\/iframe><\/p>\n<p>Si vous ne souhaitez pas d\u00e9finir une couleur par page, vous pouvez d\u00e9finir une couleur d th\u00e8me globale pour tout le site en ajoutant cette fois \u00e0 manifest.json <strong>\u00ab\u00a0theme_color\u00a0\u00bb: \u201c#133742&Prime;<\/strong><\/p>\n<p>Les utilisatrices verront cette couleur dans la barre d\u2019URL sur Android mais \u00e9galement sur le haut du site si celui-ci est lanc\u00e9 en \u201cbrowser mode\u201d. Elle est \u00e9galement utilis\u00e9e pour la barre du haut de l\u2019\u00e9cran de lancement comme expliqu\u00e9 d\u00e9j\u00e0 plus haut et en mode tiroir d\u2019applications quand vous en avez plusieurs d\u2019ouvertes.<\/p>\n<p><strong>\u201ctheme_color\u00a0\u00bb: \u201c#133742&Prime;<\/strong> me permet d\u2019avoir un joli th\u00e8me orange sur mon site :<\/p>\n<h4><img decoding=\"async\" class=\"aligncenter size-full wp-image-6072\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/theme-color.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/theme-color.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/theme-color-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/>Un outil pour les g\u00e9n\u00e9rer tous<\/h4>\n<p>Tous ces petits d\u00e9tails participent \u00e0 am\u00e9liorer l\u2019exp\u00e9rience de vos utilisatrices sur les diff\u00e9rentes plateformes mobiles. Mais leur mise en place peut devenir tr\u00e8s vite chronophage. Il vous faudra par exemple cr\u00e9er les ic\u00f4nes dans plusieurs tailles et formats tr\u00e8s diff\u00e9rents pour chaque syst\u00e8me d\u2019exploitation. Pour vous faciliter la vie il existe un g\u00e9n\u00e9rateur en ligne :<a href=\"http:\/\/realfavicongenerator.net\/\"> Favicon Generator<\/a>. Vous y chargez votre fichier de favicon dans la plus grande taille, vous choisissez les diff\u00e9rentes options dans l\u2019interface dont par exemple les options de manifest.json mentionn\u00e9es plus haut. Il ne vous reste plus qu\u2019\u00e0 t\u00e9l\u00e9charger le .zip et l\u2019installer sur votre site.<\/p>\n<h3>Un acc\u00e8s aux notifications<\/h3>\n<p><em>Avant d\u2019aller \u00e0 la conf\u00e9rence, Zoe consulte le programme et d\u00e9couvre qu\u2019il y a un petite ic\u00f4ne \u00e0 c\u00f4t\u00e9 de chaque conf\u00e9rence. En lisant les descriptions, elle comprend qu\u2019elle peut utiliser cette ic\u00f4ne pour ajouter les conf\u00e9rences qui vont l\u2019int\u00e9resser en tant que favoris \u00e0 son planning personnalis\u00e9. Sous chaque conf\u00e9rence elle voit \u00e9galement un bouton \u201cNotifiez moi 10 minutes avant le d\u00e9but\u201d. Une explication lui fait comprendre que ce bouton lui permet de recevoir 10 minutes avant le d\u00e9but de chaque conf\u00e9rence une petite notification pour l\u2019en informer.<\/em><\/p>\n<p><em>La premi\u00e8re fois que Zoe clique sur le bouton de souscriptions aux notifications, le navigateur demande l\u2019acc\u00e8s au centre de notifications pour le nom de domaine du site de la conf\u00e9rence :<\/em><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6062\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/notification-dial.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/notification-dial.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/notification-dial-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Ces notifications fonctionneront m\u00eame si le site n\u2019est pas ouvert dans le navigateur. Les utilisatrices vont cependant devoir donner l\u2019acc\u00e8s aux notifications via une petite bo\u00eete de dialogue.<\/p>\n<h3>Attention \u00e0 comment vous demandez l\u2019acc\u00e8s aux notifications<\/h3>\n<p>Retenez une chose : dans le navigateur, vous n\u2019avez quasiment qu\u2019une seule chance de demander cet acc\u00e8s. Si une utilisatrice refuse l\u2019acc\u00e8s, le navigateur ne sera pas en mesure de le redemander \u00e0 nouveau (sauf si la personne va dans les param\u00e8tres du site pour effacer les donn\u00e9es de navigation autant vous dire que \u00e7a n\u2019arrive pas souvent). Il va donc falloir \u00eatre tr\u00e8s malin lorsque vous allez demander les acc\u00e8s aux notifications, ou \u00e0 n\u2019importe quelle API qui aura besoin d\u2019un acc\u00e8s (m\u00e9dias, g\u00e9olocalisation, etc.)<\/p>\n<p>L\u2019\u00e9quipe de Chromium a r\u00e9dig\u00e9 un document qui pr\u00e9sente des bonnes pratiques lorsqu\u2019il s\u2019agit de demander l\u2019acc\u00e8s aux notifications :<a href=\"https:\/\/docs.google.com\/document\/d\/1WNPIS_2F0eyDm5SS2E6LZ_75tk6XtBSnR1xNjWJ_DPE\/edit#heading=h.v5v9jr5n9i1w\"> Best Practices for Push Notifications Permissions UX<\/a>. Il va falloir faire comprendre \u00e0 vos utilisatrices ce qu\u2019elles ont \u00e0 gagner \u00e0 garantir \u00e0 votre site l\u2019acc\u00e8s aux notifications. Il va falloir non seulement leur expliquer ce que vous allez en faire, mais \u00e9galement leur expliquer au bon moment, en contexte. Je vois de plus en plus de sites et de blogs qui demandent un acc\u00e8s aux notification \u00e0 la toute premi\u00e8re arriv\u00e9e, que ce soit sur l\u2019accueil un article ou autre. Mais ces utilisatrices ne connaissent peut-\u00eatre pas le blog ou le site. Elles sont peut-\u00eatre arriv\u00e9es via n\u2019importe quel lien suivi depuis un r\u00e9seaux social et n\u2019ont strictement aucune id\u00e9e de l\u00e0 o\u00f9 elles viennent d\u2019arriver, ni ce que votre site a \u00e0 leur offrir. Il va donc leur falloir bien plus de contexte que \u00e7a pour accepter de donner cet acc\u00e8s et \u00e9viter de les faire fuir.<\/p>\n<h3>Les notifications int\u00e9gr\u00e9es dans le syst\u00e8me d\u2019exploitation de l\u2019appareil<\/h3>\n<p><em>Le jour J est finalement arriv\u00e9 pour Zoe, elle arrive \u00e0 la conf\u00e9rence. Elle se cherche un caf\u00e9 apr\u00e8s avoir laiss\u00e9 son manteau au vestiaire quand son t\u00e9l\u00e9phone vibre. M\u00eame si elle avait ferm\u00e9 le site web de la conf\u00e9rence depuis un petit moment, elle voit une notification directement sur l\u2019\u00e9cran de verrouillage de son t\u00e9l\u00e9phone qui l\u2019informe que la premi\u00e8re conf\u00e9rence qu\u2019elle a choisi dans son planning va commencer dans 10 minutes.<\/em><\/p>\n<p>Exemple de notifications web int\u00e9gr\u00e9e dans le centre de notification natives de l\u2019appareil :<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6063\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/notifications.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/notifications.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/notifications-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Aujourd\u2019hui les notifications des navigateurs mobiles (en tout cas sur Android) peuvent entrer en comp\u00e9tition directe avec les notifications des applications natives : elles sont directement int\u00e9gr\u00e9es dans le centre de notifications de l\u2019appareil. Cela signifie qu\u2019elles seront affich\u00e9es \u00e0 l&rsquo;ext\u00e9rieur du navigateur m\u00eame si le site ou la web app ont \u00e9t\u00e9 ferm\u00e9s. Elles pourront \u00e9galement en fonction des param\u00e8tres de confidentialit\u00e9 \u00eatre affich\u00e9es sur l\u2019\u00e9cran de verrouillage de l\u2019appareil. Sur Chrome desktop, les notifications peuvent \u00e9galement \u00eatre d\u00e9sormais affich\u00e9es dans le centre de notification de Windows 10 et de MacOSx.<\/p>\n<h3>Laissez-moi vous pr\u00e9senter Push API et Service Workers<\/h3>\n<p>Un Service Worker est un petit morceau de JavaScript qui, une fois install\u00e9, s\u2019ex\u00e9cutera en t\u00e2che de fond dans votre navigateur. Il se comporte un peu comme une sorte mini proxy. Il peut \u00eatre entre autres utilis\u00e9 pour pousser des notifications dans le navigateur mobile gr\u00e2ce \u00e0 Push API (qui fait partie de la famille des technologies Service Workers). Une fois qu\u2019il a \u00e9t\u00e9 activ\u00e9 pour la page ou le domaine, le Service Worker va recevoir les messages en push et vous pouvez ensuite choisir quoi en faire (alerter l\u2019utilisatrice \u00e0 l\u2019aide de notifications Push ou pr\u00e9f\u00e9rer des notifications directement inline dans la page par exemple). Au moment de l\u2019\u00e9criture de cet article, les Service Workers sont support\u00e9s sur<a href=\"http:\/\/caniuse.com\/#feat=serviceworkers\"> Chrome, Firefox, Opera, Android Browser et Chrome pour Android et sont en \u201cConsideration for Webkit\u201d<\/a> et<a href=\"http:\/\/caniuse.com\/#feat=push-api\"> Push API est pour le moment uniquement support\u00e9 dans Firefox, Chrome et Chrome Android 51<\/a>+<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6070\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/service-worker.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/service-worker.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/service-worker-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Pour faire simple, pour profiter des notifications dans votre navigateur mobile il vous faudra :<\/p>\n<ul>\n<li>Avoir votre serveur en HTTPS<\/li>\n<li>Avoir d\u00e9clar\u00e9 un Service Worker<\/li>\n<li>Supporter Push API<\/li>\n<li>L\u2019accord de l\u2019utilisatrice donn\u00e9 via la petite bo\u00eete de dialogue.<\/li>\n<\/ul>\n<p>On atteint ici la limite de mes comp\u00e9tences techniques (oui je suis designer moi, pas d\u00e9veloppeuse ^^). Je vous laisse donc quelques ressources si vous souhaitez explorer plus loin l\u2019impl\u00e9mentation technique des Service Workers et de l\u2019API Push :<\/p>\n<ul>\n<li>Pour tester les notifications :<a href=\"https:\/\/tests.peter.sh\/notification-generator\"> notification-generator<\/a>,<a href=\"https:\/\/simple-push-demo.appspot.com\/\"> simple-push-demo.appspot.com<\/a> et<a href=\"http:\/\/goroost.com\/try-web-push\"> try-web-push<\/a><\/li>\n<li><a href=\"http:\/\/www.html5rocks.com\/en\/tutorials\/service-worker\/introduction\/?redirect_from_locale=fr\">Introduction to Service Worker<\/a>, une petite introduction sympa et<a href=\"https:\/\/hacks.mozilla.org\/2015\/12\/beyond-offline\/\"> Beyond Offline<\/a> pour d\u00e9couvrir d\u2019autres choses que vous pourrez faire avec les Service Workers<\/li>\n<li><a href=\"https:\/\/developers.google.com\/web\/fundamentals\/engage-and-retain\/push-notifications\/\">Web Push Notifications: Timely, Relevant, and Precise<\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Push_API\/Using_the_Push_API\">Using the Push API, a long but interesting article<\/a><\/li>\n<li>Le statut des Service Workers :<a href=\"https:\/\/jakearchibald.github.io\/isserviceworkerready\/\"> isserviceworkerready<\/a><\/li>\n<\/ul>\n<h3>Un acc\u00e8s hors ligne<\/h3>\n<p><em>Zoe ne s\u2019en est peut-\u00eatre pas rendu compte mais le programme de la conf\u00e9rence a \u00e9t\u00e9 mis en cache pour un acc\u00e8s hors ligne lorsqu\u2019elle visitait le site. M\u00eame si la connexion est lente, ou inexistante (ce qui arrive parfois sur les wifis ouverts des conf\u00e9rences), elle va quand m\u00eame pouvoir acc\u00e9der au site dans des conditions optimales.<\/em><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6069\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/service-worker-offline.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/service-worker-offline.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/service-worker-offline-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Pour ce petit tour de magie, nous allons \u00e0 nouveau faire appel \u00e0 nos Service Workers. Je vous avais dit qu\u2019ils fonctionnaient un peu comme des sortes de mini proxy. Ils peuvent intercepter la requ\u00eate avant qu\u2019elle aille au serveur et proposer des fichiers directement disponibles dans le cache pour acc\u00e9l\u00e9rer les pages ou les afficher m\u00eame s\u2019il n\u2019y a pas de connexion. Dans ce cas, le navigateur n\u2019ira pas chercher les fichiers sur le serveur mais va en premier les proposer \u00e0 partir du cache. En t\u00e2che de fond ensuite il pourra aller comparer les fichiers propos\u00e9s depuis le cache \u00e0 ceux disponibles sur le serveur et ne les r\u00e9cup\u00e9rer que si leur version est plus r\u00e9cente (pour ensuite mettre \u00e0 jour le cache). On peut se servir de cette technique pour faire fonctionner des pages hors ligne, mais aussi pour mettre en cache par exemple une partie de l\u2019interface pour charger ensuite uniquement le contenu en asynchrone et rendre les sites ou Web Apps plus rapides.<\/p>\n<p>J\u2019ai imagin\u00e9 mes sc\u00e9narios avec Zoe en mars 2016 pour Confoo. Je voulais au d\u00e9part cr\u00e9er une page de d\u00e9mo pour montrer ce qui serait faisable. Au final Google a lanc\u00e9 en juin le site de la Google IO en impl\u00e9mentant plus ou moins tout ce qui est d\u00e9crit ci-dessus. Plut\u00f4t que de monter une d\u00e9mo, je vous laisse donc jouer avec le site :<a href=\"https:\/\/events.google.com\/io2016\/\"> events.google.com\/io2016<\/a>. Si vous avez Chrome (Android de pr\u00e9f\u00e9rence) visitez-le sur mobile, baladez-vous sur le planning, ajoutez des \u00e9v\u00e9nements \u00e0 votre liste (vous pouvez vous connecter en utilisant un compte Google). Ajoutez ensuite le site \u00e0 votre \u00e9cran d\u2019accueil, puis fermez chrome pour le relancer. Continuez d\u2019ajouter des conf\u00e9rences \u00e0 votre liste depuis la Web app cette fois et passez en mode avion. Vous devriez voir une petite notification qui vous indique que vous n\u2019avez plus de connexion. Pourtant vous pourrez continuer \u00e0 naviguer sur le site, ajouter des conf\u00e9rences \u00e0 votre planning. Sortez du mode avion : d\u00e8s que la connexion est revenue le site synchronise les changements apport\u00e9s \u00e0 votre planning.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-6059\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/google-io.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/google-io.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/google-io-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/events.google.com\/io2016\/\">Google IO 2016 &#8211; d\u00e9mo<\/a><\/p>\n<p>Il y a deux petites d\u00e9mos que j\u2019aime beaucoup :<\/p>\n<ul>\n<li><a href=\"https:\/\/css-tricks.com\/serviceworker-for-offline\/\">Pokedex.org<\/a> est un pokedex qui fonctionne hors ligne (il existait avance le lancement de PokemonGo ahaha)<\/li>\n<li><a href=\"https:\/\/2048-opera-pwa.surge.sh\/\">2048<\/a> est un petit jeu de chiffres qui fonctionne en offline et m\u2019a sauv\u00e9 de l\u2019ennui de nombreuses heures de train et d\u2019avion.<\/li>\n<\/ul>\n<p>Encore une fois : ouvrez les sites, passez-en hors ligne et revenez.<img decoding=\"async\" class=\"aligncenter size-full wp-image-6068\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/pwa-example.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/pwa-example.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/pwa-example-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Si vous voulez aller plus loin dans le code voici quelques lectures :<\/p>\n<ul>\n<li><a href=\"http:\/\/www.deanhume.com\/Home\/BlogPost\/create-a-really--really-simple-offline-page-using-service-workers\/10135\">Create a really, really simple offline page using Service Workers<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/dev-channel\/offline-storage-for-progressive-web-apps-70d52695513c#.89q94e79i\">Offline Storage for Progressive Web Apps<\/a><\/li>\n<li><a href=\"https:\/\/css-tricks.com\/serviceworker-for-offline\/\">Making a Simple Site Work Offline with ServiceWorker<\/a><\/li>\n<\/ul>\n<h3>L&rsquo;\u00e9tape suivante : le Full Progressive Web Apps<\/h3>\n<p>Plus haut je vous ai d\u00e9crit comment am\u00e9liorer les fonctionnalit\u00e9s de vos sites web pour les rapprocher des capacit\u00e9s des applications natives. L\u2019\u00e9tape suivante est d\u00e9sormais de transformer ce site en Progressive Web App. Dans leur article \u201c<a href=\"https:\/\/medium.com\/google-developers\/instant-loading-web-apps-with-an-application-shell-architecture-7c0c2f10c73#.50aqnknm7\">Instant Loading Web Apps With An Application Shell Architecture<\/a>\u201d, Addy Osmani et Matt Gaunt d\u00e9crivent les Progressive Web Apps (ou PWAs) comme \u201cune web app qui peut progressivement \u00e9voluer avec les usages et l\u2019accord des utilisatrices pour proposer une exp\u00e9rience plus proche de l\u2019applications native\u201d.<a href=\"https:\/\/infrequently.org\/2015\/06\/progressive-apps-escaping-tabs-without-losing-our-soul\/\"> Alex Russell quant \u00e0 lui les d\u00e9crit comme \u201cJust websites that took all the rights vitamins\u201d.<\/a><\/p>\n<p>D\u2019apr\u00e8s la<a href=\"https:\/\/developers.google.com\/web\/progressive-web-apps\/\"> documentation pour les d\u00e9veloppeurs<\/a> de Google, voici ce que sont les Progressive Web Apps :<\/p>\n<ul>\n<li><strong>Progressives<\/strong>, elles fonctionnent pour toutes les utilisatrices quel que soit leur choix de navigateur car elles ont \u00e9t\u00e9 construites sur des principes d\u2019am\u00e9lioration progressive. Pour en revenir \u00e0 ce que j\u2019ai \u00e9crit plus haut au d\u00e9but de cette section, il est primordial de faire en sorte que les fonctionnalit\u00e9s c\u0153ur de votre site, fonctionnent m\u00eame si les navigateurs ne supportent pas tous toutes les technologies. Traitez ces technologies comme de l\u2019am\u00e9lioration progressive !<\/li>\n<li><strong>Responsive<\/strong>, elles fonctionnent avec n\u2019importe quelle taille d\u2019\u00e9cran actuelle et future<\/li>\n<li><strong>Non d\u00e9pendantes d\u2019une connexion<\/strong>, elles peuvent fonctionner hors ligne gr\u00e2ce aux Service Workers,<\/li>\n<li><strong>Toujours \u00e0 jours<\/strong> gr\u00e2ce encore une fois \u00e0 des syst\u00e8mes de mise \u00e0 jours li\u00e9es aux Service Workers,<\/li>\n<li><strong>S\u00e9curis\u00e9es<\/strong> car elles fonctionnent obligatoirement en HTTPS pour \u00e9viter le snooping et l\u2019injection de contenus,<\/li>\n<li><strong>D\u00e9couvrables facilement<\/strong>, elles sont identifi\u00e9es comme \u201capplication\u201d gr\u00e2ce au manifest W3C et restent trouvables et indexables par les moteurs de recherche, comme n\u2019importe quel bon vieux site web,<\/li>\n<li><strong>Favorisent l\u2019engagement<\/strong> gr\u00e2ce \u00e0 des fonctionnalit\u00e9s comme les notifications push. Encore une fois, \u00e0 utiliser avec pr\u00e9caution surtout lorsque vous demandez l\u2019acc\u00e8s pour la premi\u00e8re fois<\/li>\n<li><strong>Installables<\/strong>, comme d\u00e9crit juste au-dessus, l\u2019ic\u00f4ne de lancement permet aux utilisatrices de garder les PWAs les plus utilis\u00e9es sur leur \u00e9cran d\u2019accueil de leur Smartphone sans avoir \u00e0 passer par un store ou market pour l\u2019installation.<\/li>\n<li><strong>Faciles \u00e0 partager<\/strong>, comme n\u2019importe quel site web, vous pouvez facilement les partager gr\u00e2ce \u00e0 leur URL.<\/li>\n<li><strong>App-like<\/strong>, elles ont le look and feel d\u2019une application native, le m\u00eame type de navigation et d\u2019interactions et sont construites sur un syst\u00e8me d\u2019application shell (j\u2019y reviens plus bas).<\/li>\n<\/ul>\n<p>Le dernier point sur l\u2019app shell est l\u00e0 o\u00f9 le foss\u00e9 entre PWAs, site responsive classiques et applications natives se r\u00e9duit. Celles d\u2019entre vous qui ont d\u00e9j\u00e0 construit des applications natives sont plut\u00f4t famili\u00e8res avec le concept. Au final lorsque l\u2019utilisatrice t\u00e9l\u00e9charge une application native, elle t\u00e9l\u00e9charge d\u00e9j\u00e0 une grande partie de l\u2019UI (les ic\u00f4nes, les fonds, les polices, etc.) lors de son installation. Quand elle lance l\u2019application, tout est d\u00e9j\u00e0 pr\u00eat pour l\u2019affichage et le contenu est ensuite souvent r\u00e9cup\u00e9r\u00e9 dynamiquement sur le serveur.<\/p>\n<p>Le concept d\u2019application shell est assez similaire : il rassemble le minimum de HTML, CSS et JS requis pour afficher l\u2019interface. Le tout sera ensuite mis en cache pour charger la PWA plus rapidement. Le reste du contenu est ensuite affich\u00e9 dynamiquement sur les diff\u00e9rentes vues, comme pour une application native.<\/p>\n<p><a href=\"https:\/\/medium.com\/google-developers\/instant-loading-web-apps-with-an-application-shell-architecture-7c0c2f10c73#.p9tdc6jg8\">Instant Loading Web Apps with An Application Shell Architecture<\/a>\u00a0:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6053\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/application-shell.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/application-shell.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/application-shell-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/>Si vous \u00eates curieuses, cherchez de l\u2019inspiration ou souhaitez tester ce dont les PWAs sont capables, des membres d\u2019Opera ont cr\u00e9\u00e9<a href=\"https:\/\/pwa.rocks\/\"> pwa.rocks<\/a>, un petit site tr\u00e8s sympa qui rassemble des d\u00e9mos.<\/p>\n<h3>Un grand pouvoir implique\u2026<\/h3>\n<p>Vous connaissez la suite (bon ok pour ceux qui n\u2019ont jamais vu aucun Spiderman, un grand pouvoir implique de grandes responsabilit\u00e9s). Il y a eu<a href=\"https:\/\/adactio.com\/journal\/10708\"> quelques<\/a><a href=\"https:\/\/www.kryogenix.org\/days\/2016\/05\/24\/the-importance-of-urls\/\"> d\u00e9bats<\/a> dans la communaut\u00e9 web sur diff\u00e9rentes th\u00e9matiques concernant les PWAs et plusieurs questions ont \u00e9t\u00e9 pos\u00e9es :<\/p>\n<ul>\n<li>Est-ce une bonne id\u00e9e de cacher les URLs dans les PWAs ? En effet les d\u00e9veloppeurs ont le choix de la fa\u00e7on dont ils pr\u00e9f\u00e8rent lancer la Web Apps, mais Chrome semble favoriser le mode Standalone. Si l\u2019URL est masqu\u00e9e, comment les utilisatrices peuvent-elles partager la PWA (retour des horribles boutons de partage embarqu\u00e9s par exemple) ?<\/li>\n<li>Beaucoup de d\u00e9mos et d\u2019exemples de PWA actuels semblent se concentrer beaucoup sur l\u2019aspect \u201capplication\u201d et oublie un peu la partie web : est-ce que l\u2019on est en train de revenir vers un mod\u00e8le avec deux sites, un desktop et un optimis\u00e9 mobile ? De mon c\u00f4t\u00e9 j\u2019ai vraiment h\u00e2te de voir plus de sites responsive bien construits du c\u00f4t\u00e9 des Progressive Web Apps<\/li>\n<li>Charger l\u2019application shell est un peu comme charger une coquille vide de d\u00e9coration avant de charger le contenu alors que de plus en plus de personnes tentent de favoriser une approche \u201ccontent first\u201d du web qui dit exactement l\u2019inverse. Est-ce que les utilisatrices sont pr\u00eats \u00e0 attendre que le contenu se charge dans une coquille vide, ou est-ce que l\u2019on ne risque pas de les frustrer \u00e0 la longue ?<\/li>\n<\/ul>\n<p>Selon moi, tous les sites n\u2019ont pas vocation \u00e0 devenir des Progressive Web apps. J\u2019ai<a href=\"https:\/\/www.stephaniewalter.fr\/\"> par exemple transform\u00e9 mon portfolio en d\u00e9but de PWA<\/a> (vous pouvez l\u2019installer depuis votre navigateur mobile sur votre page d\u2019accueil mais il n\u2019y a pas d\u2019offline ou de Service Worker pour le moment). Je m\u2019en sers pour de la d\u00e9mo et des tests, mais soyons honn\u00eates, transformer un portfolio en web app c\u2019est totalement inutile dans la vrai vie. A part ma maman (coucou maman si tu me lis), personne ne va aller installer mon portfolio comme application pour le consulter souvent depuis son t\u00e9l\u00e9phone. Et c\u2019est tout \u00e0 fait normal, car mon portfolio n\u2019a rien d\u2019une exp\u00e9rience de web app.<\/p>\n<p>Je pense donc que les PWAs sont une super id\u00e9e pour les sites que les utilisatrices ont tendance \u00e0 visiter souvent, comme des sites de news ou des blogs \u00e0 contenu souvent mis \u00e0 jour (le genre de sites pour lesquels Chrome proposer une banni\u00e8re d\u2019installation). \u00c7a pourrait \u00e9galement \u00eatre utile pour des sites e-commerce (hum oui Amazon je pense \u00e0 toi) ou des sites de livraison de restaurants o\u00f9 les utilisatrices reviendraient \u00e9galement souvent. Bref, des sites \u00e0 forte valeur ajout\u00e9e des sites d\u00e9j\u00e0 orient\u00e9 Web Apps de base qui permettent d\u2019accomplir des t\u00e2ches sur lesquels les utilisatrices pourraient \u00e9galement tirer une valeur ajout\u00e9e des fonctionnalit\u00e9s d\u00e9crites dans cet article (m\u00e9dias, notifications, offline, g\u00e9olocalisation, etc.)<\/p>\n<p>J\u2019ajouterais bien les r\u00e9seaux sociaux comme Facebook \u00e0 la liste, mais honn\u00eatement, \u00e7a serait peu int\u00e9ressant pour eux de construire une PWA : les donn\u00e9es qu\u2019ils pourraient collecter (et revendre) depuis le navigation sont moins int\u00e9ressantes et nombreuses que celles auxquelles ils ont acc\u00e8s depuis l\u2019application native.<\/p>\n<p>Le site mobile de Facebook fonctionne plut\u00f4t bien. Mais d\u00e8s que vous essayez de lire vos messages et acc\u00e9der \u00e0 messenger, le site tente de vous forcer \u00e0 ouvrir (et donc t\u00e9l\u00e9charger) l\u2019application Facebook Messenger. C\u2019est d\u2019autant plus fun que<a href=\"https:\/\/www.messenger.com\/\"> Messenger<\/a> est en fait un site desktop tr\u00e8s bien optimis\u00e9 en Responsive qui pourrait s\u2019afficher sur de petits \u00e9crans sans (trop?) de soucis. Je vous laisse jouer avec et le r\u00e9duire dans tous les sens. MAIS d\u00e8s que vous visitez ce m\u00eame site depuis un appareil mobile (ou avec un User Agent mobile), vous arrivez sur une version mobile d\u00e9di\u00e9e qui vous force \u00e0 installer l\u2019application pour l\u2019utiliser. Quand on en vient au d\u00e9bat sites web responsive (ou PWAs) vs Application native, m\u00eame si aujourd\u2019hui nous avons les outils et les capacit\u00e9s de construire BEAUCOUP de choses dans nos navigateurs mobiles, la d\u00e9cision ne sera pas toujours uniquement technique. Et le fait que l\u2019on ne puisse pas acc\u00e9der au carnet de contacts depuis le mobile doit \u00e9galement peser dans la balance dans cet exemple pr\u00e9cis.<\/p>\n<p>Si vous souhaitez en savoir plus sur le sujet des Progressive Web Apps :<\/p>\n<ul>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"https:\/\/www.smashingmagazine.com\/2016\/08\/a-beginners-guide-to-progressive-web-apps\/\">A Beginner\u2019s Guide To Progressive Web Apps<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"https:\/\/www.theguardian.com\/info\/developer-blog\/2016\/aug\/19\/how-we-made-the-riorun-progressive-web-app\">How we made the RioRun Progressive Web App<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"http:\/\/nolanlawson.github.io\/pwas-2016-05\/#\/\">Progressive Web Apps, conference slides by @nolanlawson<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"http:\/\/tech-blog.flipkart.net\/2015\/11\/progressive-web-app\/\">Progressive Web App: A New Way to Experience Mobile<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"http:\/\/www.wsj.com\/articles\/washington-post-unveils-lightning-fast-mobile-website-1473152456\">Washington Post Unveils \u2018Lightning-Fast\u2019 Mobile Website<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"https:\/\/cloudfour.com\/thinks\/designing-responsive-progressive-web-apps\/\">Designing Responsive Progressive Web Apps<\/a><\/li>\n<\/ul>\n<h2>Adapter son site \/ web app au contexte et besoins de l\u2019utilisatrice<\/h2>\n<p>Nos mobiles sont aujourd\u2019hui \u00e9quip\u00e9s de toute une panoplie de capteurs gr\u00e2ce auxquels il nous est possible, pour le meilleur et le pire, de recueillir de pr\u00e9cieuses informations sur nos utilisatrices. La derni\u00e8re partie de cet article se concentrera sur les possibilit\u00e9s d\u2019am\u00e9liorer l&rsquo;exp\u00e9rience de nos utilisatrices en fonction de leur localisation g\u00e9ographique, leurs besoins actuels, situation ou contexte.<\/p>\n<h3>La d\u00e9tection de la luminosit\u00e9 ambiante<\/h3>\n<p><em>Revenons \u00e0 Zoe un court instant. Gr\u00e2ce aux notifications sur son \u00e9cran, elle est arriv\u00e9e \u00e0 l\u2019heure pour la premi\u00e8re conf\u00e9rence. Elle s\u2019assied confortablement dans le si\u00e8ge de th\u00e9\u00e2tre, la salle devient sombre et la premi\u00e8re oratrice arrive sur sc\u00e8ne, pr\u00eate \u00e0 commencer sa conf\u00e9rence. Quand Zoe visite une derni\u00e8re fois le site de la conf\u00e9rence avant de ranger son mobile.<\/em><\/p>\n<p><em>A sa grande surprise, les couleurs du site ont chang\u00e9 au profit d\u2019un th\u00e8me plus sombre qui permettra aux personnes autour de Zoe de ne pas \u00eatre \u00e9blouies par la lueur autrement blanche de son t\u00e9l\u00e9phone portable<\/em><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6051\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/ambient-light.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/ambient-light.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/ambient-light-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Il est possible d\u2019adapter la luminosit\u00e9 et le contraste d\u2019un site en utilisant les d\u00e9tecteurs de lumi\u00e8re ambiante des appareils mobiles. Il existe bien plus d\u2019usages possibles que simplement assombrir le site si l\u2019utilisatrice est dans une salle sombre. Beaucoup de sites que l\u2019on construit finissent utilis\u00e9s dans des environnements sombres (dans le canap\u00e9 en regardant la TV par exemple) mais ce n\u2019est pas le cas de beaucoup d\u2019interfaces utilis\u00e9es dans une milieu professionnel qui seront souvent utilis\u00e9es \u201csur le terrain\u201d. Et par l\u00e0 entendez en ext\u00e9rieur, qu\u2019il neige, pleuve ou sous un soleil radieux.<\/p>\n<p>J\u2019ai par exemple travaill\u00e9 sur un dispositif de monitoring de grues de chantiers. L\u2019interface est une web app qui fonctionne sur Chrome desktop et tablette. L\u2019op\u00e9rateur surveille les grues du chantier et re\u00e7oit des alertes si la vitesse du vent devient trop \u00e9lev\u00e9e dans le but de pouvoir intervenir et \u00e9viter la collision. Ce genre de dispositif peut \u00eatre install\u00e9 dans une cabine de chantier o\u00f9 il peut \u00e0 la fois faire tr\u00e8s sombre et tr\u00e8s clair en plein milieu de la journ\u00e9e quand le soleil tape de plein fouet sur la fen\u00eatre. En utilisant la d\u00e9tection de luminosit\u00e9, on peut imaginer renforcer les contrastes lorsque la pi\u00e8ce devient trop lumineuse pour s\u2019assurer que notre op\u00e9rateur verra toujours les pr\u00e9cieuse alertes de l\u2019interface.<\/p>\n<p>Il existe en th\u00e9orie deux technologies qui peuvent nous permettre de cr\u00e9er cette interface. La premi\u00e8re est<a href=\"https:\/\/www.w3.org\/TR\/ambient-light\/\"> Ambient Light Sensor API<\/a> qui permet d\u2019acc\u00e9der \u00e0 l\u2019intensit\u00e9 lumineuse mesur\u00e9e par le capteur de l\u2019appareil. Au moment de l\u2019\u00e9criture de cet article, seul<a href=\"http:\/\/caniuse.com\/#feat=ambient-light\"> Edge et Firefox Desktop<\/a> supportent cette API. Il existait \u00e9galement une Media Query Level 4 qui s\u2019appelle light-level query, mais il semblerait qu\u2019elle ait \u00e9t\u00e9 report\u00e9e dans le module<a href=\"https:\/\/github.com\/w3c\/ambient-light\/issues\/12\"> Media Queries Level 5<\/a>. Ce n\u2019est donc pas forc\u00e9ment de suite que l\u2019on pourra d\u00e9tecter la luminosit\u00e9 ambiante en CSS.<\/p>\n<p><iframe loading=\"lazy\" title=\"Ambient light demo\" src=\"https:\/\/player.vimeo.com\/video\/188563595?dnt=1&amp;app_id=122963\" width=\"422\" height=\"750\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\"><\/iframe><\/p>\n<p><a href=\"http:\/\/codepen.io\/WhatWebCanDo\/pen\/OyWZqY\">Une d\u00e9mo codepen<\/a> si vous souhaitez tester l\u2019API.<\/p>\n<h3>Des retours sur la conf\u00e9rence en utilisant du transfert d\u2019URL en Bluetooth<\/h3>\n<p>A la fin d\u2019une conf\u00e9rence, les organisatrices et oratrices aiment souvent collecter les retours des participantes. Lorsque j\u2019\u00e9tais \u00e0 Confoo, nous recevions \u00e0 la fin de chaque conf\u00e9rence un petit papier \u00e0 remplir \u00e0 la main. L\u2019\u00e9quipe se chargeait ensuite de les collecter, les scanner, les r\u00e9sumer et envoyer \u00e0 l\u2019oratrice une note moyenne avec une s\u00e9lection des remarques. C\u2019\u00e9tait franchement g\u00e9nial et impressionnant de recevoir par mail les retours de sa conf\u00e9rence \u00e0 peine 1h apr\u00e8s l\u2019avoir donn\u00e9e. J\u2019imagine cependant que \u00e7a devait \u00eatre un travail tr\u00e8s cons\u00e9quent de la part du staff de Confoo.<\/p>\n<p>Et si on essayait d\u2019utiliser des technologies Bluetooth et des URLs pour am\u00e9liorer ce processus et collecter rapidement les retours directement sur nos appareils mobiles ?<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6055\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/confoo-survey.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/confoo-survey.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/confoo-survey-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<h4>Le Physical Web appliqu\u00e9 aux retours de conf\u00e9rence<\/h4>\n<p>Si vous n\u2019\u00eates pas encore familier avec le concept, laissez-moi introduire le \u201cPhysical Web\u201d. Il s\u2019agit d\u2019une initiative lanc\u00e9e par Google (mais open source) qui tente de \u201c<a href=\"https:\/\/google.github.io\/physical-web\/\">permettre des interactions rapides et transparentes avec des objets physiques et des lieux<\/a>\u201d. L\u2019id\u00e9e est d\u2019utiliser le super pouvoir du web, \u00e0 savoir les URLs, pour partager le contenu et laisser les utilisatrices interagir avec des objets et leur environnement proche sans encore une fois avoir \u00e0 installer la moindre application native. C\u2019est un peu comme des QRcodes sous st\u00e9ro\u00efdes sans avoir besoin de scanner ces QRcodes.<\/p>\n<p>La technologie est bas\u00e9e sur des beacons Bluetooth qui vont diffuser des URLs autour d\u2019eux. Les utilisatrices pourront d\u00e9tecter ces URLs gr\u00e2ce \u00e0 leur navigateur et directement ouvrir les sites et Web Apps associ\u00e9s pour acc\u00e9der \u00e0 un contenu, interagir avec un objet, etc.<\/p>\n<p><em>Retournons \u00e0 notre Zoe et notre conf\u00e9rence pour un instant. Un beacon BLE (Bluetooth Low Energy) supportant le protocole Eddystone a \u00e9t\u00e9 plac\u00e9 sur le poster qui annonce sa conf\u00e9rence juste \u00e0 c\u00f4t\u00e9 de la porte.<\/em><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6065\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/pw-01.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/pw-01.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/pw-01-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p><em>Ce beacon va diffuser une URL autour de lui. Le navigateur de Zoe peut scanner et afficher ces URLs. Zoe voit une petite notification dans son navigateur lui indiquant qu\u2019une URL Physical Web est disponible autour d\u2019elle.<\/em><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6066\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/pw-02.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/pw-02.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/pw-02-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p><em>Zoe va ensuite ouvrir directement l\u2019URL r\u00e9cup\u00e9r\u00e9e via le scanner dans son navigateur mobile. Elle pourra alors remplir le formulaire de retours de la conf\u00e9rence en ligne. Les membres du staff n\u2019ont plus besoin de scanner tous les petits bouts de papiers. On peut imaginer avoir un beacon qui diffuse une URL unique sur chaque poster de conf\u00e9rence.<\/em><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6067\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/pw-03.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/pw-03.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/pw-03-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>Pour faire fonctionner ce cas d\u2019usage, les utilisatrices vont devoir activer en avance la partie Physical Web dans leur navigateur et bien s\u00fbre avoir \u00e9galement le Bluetooth de leur appareil activ\u00e9. Pour le moment, le scanner Physical Web n\u2019est PAS activ\u00e9 par d\u00e9faut. On<a href=\"https:\/\/google.github.io\/physical-web\/try-physical-web\"> peut l\u2019activer sur Chrome pour Android et iOS<\/a>. Cette technologie est support\u00e9e dans Chrome iOS depuis juin 2015 et disponible sur Chrome Android \u00e0 partir de la version 49 sur les appareils KitKat 4.4 et plus. Dans les d\u00e9mos IRL que j\u2019ai vues pour le moment, j\u2019ai d\u2019ailleurs l\u2019impression que \u00e7a fonctionne mieux sur les Chrome iOS de mes amis que sur mon Android.<\/p>\n<h4>Et ce qui se passe ensuite, c\u2019est simplement, le web \u2026<\/h4>\n<p>On peut imaginer attacher un beacon \u00e0 tout et n\u2019importe quoi : un poster de conf\u00e9rence ou une affiche dans la rue, <a href=\"https:\/\/thisis.dog\/fr\/produits-pour-chien\/meubles-chien\/meilleurs-meubles-chien-collection-ikea-lurvig\/\">un collier de chien<\/a>, un syst\u00e8me de location de v\u00e9los en ville, etc. Le but serait d\u2019utiliser cette technologie pour des petites interactions pour lesquelles vous n\u2019iriez pas jusqu\u2019\u00e0 construire une application, mais pour lesquelles il y aurait un int\u00e9r\u00eat de construire une page web simple. Scott Jenson dans sa vid\u00e9o d\u2019introduction au Physical Web d\u00e9crit un cas d\u2019utilisation int\u00e9ressant :<a href=\"https:\/\/www.youtube.com\/watch?v=1yaLPRgtlR0&amp;feature=youtu.be&amp;t=1m26s\"> pouvoir payer un parcm\u00e8tre en utilisant uniquement le Physical Web et une URL<\/a>. En r\u00e9sum\u00e9, tout le pouvoir du Physical Web r\u00e9side dans sa capacit\u00e9 \u00e0 amener facilement l\u2019URL au t\u00e9l\u00e9phone. Tout ce qui se passe ensuite, est simplement, le web :)<\/p>\n<p>Et c\u2019est l\u00e0 qu\u2019on va VRAIMENT pouvoir commencer \u00e0 s\u2019amuser un peu ! Dans sa conf\u00e9rence \u201c<a href=\"http:\/\/www.slideshare.net\/yiibu\/the-internet-of-things-is-for-people\">The internet of things is for people<\/a>\u201d, Stephanie Rieger nous explique qu\u2019\u00e0 partir du moment o\u00f9 on peut combiner 3 choses, \u00e0 savoir une URL, une localisation g\u00e9ographique (pas besoin de g\u00e9olocalisation, si vous placez des beacons, vous savez o\u00f9 chacun se trouve tr\u00e8s pr\u00e9cis\u00e9ment) et un timestamp (pareil ici vous pouvez savoir \u00e0 quel moment exact l\u2019URL est visit\u00e9e), on va pouvoir commencer \u00e0 faire plein de choses tr\u00e8s sympa et proposer des contenus plus personnalis\u00e9s. En connaissant le contexte exact de votre utilisatrice, vous pouvez alors lui envoyer une URL personnalis\u00e9e vers un site dont le contenu pourra \u00eatre mis \u00e0 jour en fonction de sa situation et lui proposer ainsi une exp\u00e9rience progressivement am\u00e9lior\u00e9e et adapt\u00e9e \u00e0 ses besoins. C\u2019est le moment de sortir les Service Workers, WebRTC, les notifications, les Progressive Web Apps et toutes les technologies mentionn\u00e9es plus haut dans l\u2019article. Ch\u00e8res amies designeuses et d\u00e9veloppeuse, voil\u00e0 entre vos mains un pouvoir surpuissant !<\/p>\n<p>Un autre exemple int\u00e9ressant tir\u00e9 des slides de Stephanie est l\u2019enseigne de<a href=\"https:\/\/panic.com\/blog\/the-panic-sign\/\"> Panic \u00e0 Portland<\/a>. L\u2019\u00e9quipe de Panic a construit une enseigne lumineuse interactive. Les personnes peuvent<a href=\"https:\/\/sign.panic.com\/\"> se rendre sur une petite web app d\u00e9di\u00e9e et en changer la couleur<\/a>. Plut\u00f4t sympa non ? Le site a m\u00eame \u00e9t\u00e9 optimis\u00e9 pour en faire une Progressive Web App.<\/p>\n<p>Bon, c\u2019est marrant de changer la couleur d\u2019une enseigne \u00e0 l\u2019autre bout du monde depuis chez moi, mais \u00e7a reste quand m\u00eame un peu loin de chez moi. Et beaucoup de personnes qui se baladent dans la zone ne savent m\u00eame pas qu\u2019elles peuvent jouer avec la couleur de cette enseigne. Avec le Physical Web, on pourrait imaginer de diffuser cette URL directement autour des locaux de Panic pour permettre \u00e0 n\u2019importe qui se promenant autour de d\u00e9couvrir l\u2019astuce et jouer avec la couleur de l\u2019enseigne en temps r\u00e9el !<\/p>\n<p>Si vous cherchez d\u2019autres id\u00e9es bien fun autour de ces technologies, voici quelques liens :<\/p>\n<ul>\n<li><a href=\"https:\/\/www.hackster.io\/agent-hawking-1\/create-a-beacon-enabled-treasure-box-085314\">Jen Looper a cr\u00e9\u00e9 une petite bo\u00eete \u00e0 tr\u00e9sors beacon<\/a><\/li>\n<li><a href=\"https:\/\/www.hackster.io\/eely22\/physical-web-controlled-candy-machine-ce6711\">Physical Web Candy Machine<\/a><\/li>\n<li>Pas le Physical Web mais une id\u00e9e fun et similaire,<a href=\"http:\/\/www.technobuffalo.com\/videos\/disney-fun-wheel-challenge-world-of-color-hands-on\/\"> Disney\u2019s Fun Wheel Challenge<\/a> permet aux gens de se connecter \u00e0 un wifi et s\u2019amuser avec la grande roue en temps r\u00e9el en attendant leur man\u00e8ge, sans la moindre application \u00e0 installer.<\/li>\n<li><a href=\"http:\/\/www.slideshare.net\/jeffprestes\/physical-web-62013819\">Physical Web par Jeff Prestes<\/a><\/li>\n<\/ul>\n<h3>Aller plus loin avec Web Bluetooth API<\/h3>\n<p>Le Physical Web n\u2019est qu\u2019un projet parmi d\u2019autres pour amener la technologie Bluetooth dans nos navigateurs. Par exemple<a href=\"https:\/\/webbluetoothcg.github.io\/web-bluetooth\/\"> Web Bluetooth API<\/a> permet aux Web Apps et sites d\u2019acc\u00e9der directement aux services Bluetooth d\u2019un appareil. Pour un futur plus ou moins proche, cela veut donc dire que l\u2019on pourrait potentiellement connecter directement des appareils Bluetooth comme des smartwatches, des capteurs, des thermostats intelligents, etc. \u00e0 un navigateur via Bluetooth. J\u2019\u00e9cris \u201cdans un futur\u201d parce que bon,<a href=\"http:\/\/caniuse.com\/#feat=web-bluetooth\"> pour le moment seul Chrome et Opera desktop le supportent, et encore, il faut activer le flag<\/a>.<\/p>\n<p>Avec un support plus massif, on pourra faire des choses fun comme par exemple changer les couleurs et l\u2019humeur de cette adorable petite tortue en utilisant uniquement un site web et une connexion Bluetooth.<\/p>\n<p><iframe loading=\"lazy\" title=\"Web Bluetooth ChromeOS Developer Preview Demo 2015-07-17\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/1LV1Fk5ZXwA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h3>G\u00e9olocalisation et statut de la batterie<\/h3>\n<p><em>Quelques heures plus tard, la conf\u00e9rence se termine. Zoe est fatigu\u00e9e et d\u00e9cide de rentrer \u00e0 son h\u00f4tel en utilisant le service de location de v\u00e9lo \u201cV\u00e9libre\u201d.<\/em><\/p>\n<h4>S\u2019adapter \u00e0 la situation g\u00e9ographique de l\u2019utilisatrice<\/h4>\n<p><em>Zoe ouvre le site de V\u00e9libre. Elle voit un gros bouton \u201cme g\u00e9olocaliser\u201d et un petit texte qui lui explique qu\u2019elle pourra alors trouver la station de location de v\u00e9lo la plus proche de l\u00e0 o\u00f9 elle se trouve une fois qu\u2019elle aura accept\u00e9 de donner au site l\u2019acc\u00e8s \u00e0 sa position.<\/em><\/p>\n<p><em>Zoe appuie sur le bouton, une petite bo\u00eete de dialogue lui demande l\u2019autorisation d\u2019acc\u00e9der \u00e0 sa position, ce qu\u2019elle accepte dans la foul\u00e9e :\u00a0<\/em><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6058\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/gelocation.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/gelocation.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/gelocation-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/>Gr\u00e2ce \u00e0 l\u2019<a href=\"https:\/\/www.w3.org\/TR\/geolocation-API\/\">API Geolocation<\/a> il est possible d\u2019acc\u00e9der non seulement \u00e0 la position actuelle de l\u2019utilisatrice, mais \u00e9galement de suivre les changements de cette position en d\u00e9placement. Au final, vous pouvez aujourd\u2019hui faire en termes de g\u00e9olocalisation tout ce qu\u2019il est possible de faire dans une application native. Le support est excellent sur les navigateurs mobiles<a href=\"http:\/\/caniuse.com\/#feat=geolocation\"> \u00e0 l\u2019exception d\u2019Op\u00e9ra Mini<\/a>. Encore une fois, comme n\u2019importe quelle API, il faut demander l\u2019autorisation d\u2019y acc\u00e9der la premi\u00e8re fois \u00e0 l\u2019utilisatrice. Soyez clairs, concis, et expliquez-leur de fa\u00e7on tr\u00e8s pr\u00e9cise pourquoi vous avez besoin de cet acc\u00e8s. Demandez-le en contexte, pas lorsque la personne arrive pour la premi\u00e8re fois sur votre site. Encore une fois, faites comprendre pourquoi vous avez besoin de l&rsquo;acc\u00e8s et ce que la personne va gagner en contrepartie.<\/p>\n<p>Dans une optique d\u2019am\u00e9lioration progressive, pensez \u00e9galement \u00e0 vos fallbacks. Parfois tout ne se passe pas comme pr\u00e9vu : la g\u00e9olocalisation peut ne pas fonctionner, le GPS peut ne plus capter, ou les utilisatrices peuvent ne pas avoir vu la petite bo\u00eete de dialogue pour accepter l\u2019acc\u00e8s (je l\u2019ai vu de mes propres yeux dans une session de test, c\u2019est TR\u00c8S frustrant). Pensez \u00e0 fournir une solution de repli dans ces cas-l\u00e0, \u00e7a peut simplement \u00eatre un champ texte pour entrer manuellement l\u2019adresse.<\/p>\n<p>Enfin, ne partez pas du principe que vos utilisatrices souhaitent profiter de votre service forc\u00e9ment \u00e0 l\u2019endroit o\u00f9 elles se trouvent, laissez-les changer la localisation. L\u2019application de cin\u00e9ma que j\u2019avais t\u00e9l\u00e9charg\u00e9e par exemple me proposait \u00e0 une \u00e9poque uniquement les s\u00e9ances de cin\u00e9ma autour de l\u2019endroit o\u00f9 je me trouvais. Pratique pour sortir le soir quand je suis chez moi, beaucoup moins lorsque je suis en d\u00e9placement ou en vacances \u00e0 l\u2019autre bout de la France et souhaite planifier une s\u00e9ance de cin\u00e9ma ailleurs pour plus tard dans une autre ville. \u00c9viter de faire des suppositions hasardeuses sur les besoins de vos utilisatrices et utiliser ces technologies comme des am\u00e9liorations progressives et non des fonctionnalit\u00e9s par d\u00e9faut est toujours une bonne id\u00e9e.<\/p>\n<h4>S\u2019adapter au niveau de batterie<\/h4>\n<p><em>La journ\u00e9e a \u00e9t\u00e9 longue, Zoe a beaucoup utilis\u00e9 son t\u00e9l\u00e9phone et sa batterie est presque vide. Elle appuie sur le bouton qui lui permet de voir la station de v\u00e9lo la plus proche de son lieu actuel et demande un calcul d\u2019itin\u00e9raire. Le site d\u00e9tecte que le niveau de la batterie de Zoe est tr\u00e8s bas et va charger automatiquement une image statique du trajet au lieu d\u2019une carte interactive et ce dans le but de pr\u00e9server le peu de batterie qu\u2019il lui reste.<\/em><\/p>\n<p><em>Un petit \u201ctoast\u201d en haut de l\u2019\u00e9cran informe Zoe du changement sur le site et lui propose un bouton qui lui permettra si elle le souhaite de quand m\u00eame acc\u00e9der \u00e0 la carte dynamique :\u00a0<\/em><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-6054\" src=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/battery.jpg\" alt=\"\" width=\"1280\" height=\"750\" srcset=\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/battery.jpg 1280w, https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/battery-768x450.jpg 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>L\u2019API<a href=\"https:\/\/www.w3.org\/TR\/battery-status\/\"> Battery Status<\/a> permet d\u2019acc\u00e9der au niveau de batterie de l\u2019appareil. Sur un web responsable (et responsive ^^), on pourrait par exemple imaginer de charger des ressources qui consomment moins de batterie si l\u2019on se rend compte qu\u2019elle est presque vide du c\u00f4t\u00e9 de nos utilisatrices. Ce genre d\u2019optimisations pourraient \u00eatre tr\u00e8s int\u00e9ressantes pour des fonctionnalit\u00e9s qui sont justement tr\u00e8s gourmandes en \u00e9nergie comme le GPS, les protocoles P2P, les animations, etc.<\/p>\n<p>Il y a une petite<a href=\"http:\/\/codepen.io\/WhatWebCanDo\/pen\/epvKNB\"> d\u00e9mo<\/a> en ligne si vous souhaitez jouer avec l\u2019API qui est actuellement support\u00e9e sur<a href=\"http:\/\/caniuse.com\/#feat=battery-status\"> Chrome, Firefox et Opera Desktop et la derni\u00e8re version d\u2019Android Chrome<\/a>.<\/p>\n<h2>Conclusion<\/h2>\n<p>Dans cet article, inspir\u00e9 par une conf\u00e9rence que j\u2019ai donn\u00e9<a href=\"https:\/\/stephaniewalter.design\/le-futur-du-web-dans-le-navigateur-mobile-confoo-2016\/\"> en fran\u00e7ais<\/a> puis<a href=\"https:\/\/stephaniewalter.design\/blog\/forget-apps-future-mobile-browser-nightlybuild-2016-conference\/\"> en anglais<\/a>, je voulais vous pr\u00e9senter des APIs et technologies qui pourront faciliter la vie \u00e0 nos utilisatrices. Le futur dans le navigateur mobile s\u2019annonce vraiment prometteur et tr\u00e8s fun et je pense qu\u2019on va pouvoir bien s\u2019amuser en tant que designeuses et d\u00e9veloppeuses et construire des interfaces tr\u00e8s puissantes \u00e0 l\u2019avenir.<\/p>\n<p>La personne avis\u00e9e et attentive aura sans doute constat\u00e9 en lisant que le support de ces technologies est pour le moment domin\u00e9 par Android Chrome, suivi de Firefox, Opera puis Microsoft Edge. Ces acteurs semblent essayer de faire avancer et am\u00e9liorer l\u2019exp\u00e9rience des applications web dans les navigateurs mobiles. iOS quant \u00e0 lui tra\u00eene la patte. Le plus gros souci selon moi pour le moment est le manque de support des Service Workers. Si on veut proposer une exp\u00e9rience web qui puisse rivaliser avec l\u2019exp\u00e9rience apport\u00e9e par les applications natives, pouvoir proposer des notifications et de l\u2019offline (deux fonctionnalit\u00e9s pour lesquelles vous aurez besoin de SWs) devient crucial pour beaucoup de sites et de services.<\/p>\n<p>D\u2019un point de vue plus global, le probl\u00e8me va bien au-del\u00e0 du simple support navigateur. Le mod\u00e8le \u00e9conomique d\u2019Apple s\u2019est construit sur un fort \u00e9cosyst\u00e8me d\u2019applications disponibles depuis leur store, \u201cthere\u2019s an app for that\u201d, vous vous souvenez ? Quel int\u00e9r\u00eat aurait la grosse pomme aujourd\u2019hui \u00e0 ouvrir cet \u00e9cosyst\u00e8me pour laisser les d\u00e9veloppeurs construire des applications webs qui seraient accessibles \u00e0 l\u2019ext\u00e9rieur de ce store ? Sachant qu\u2019en plus, Apple se r\u00e9mun\u00e8re \u00e9galement sur une partie des revenus in app, on comprend assez vite le challenge et les soucis qu\u2019une ouverture au monde du web pourrait engendrer.<\/p>\n<p>Faut-il cependant laisser le manque de support sur iOS nous freiner dans l\u2019impl\u00e9mentation de ces technologies ? Personnellement, je pense que non. Il ne faut pas foncer t\u00eate baiss\u00e9e bien s\u00fbr et utiliser ces APIS comme si elles \u00e9taient support\u00e9es partout. Mais travailler sur de la Progressive Web App veut surtout dire au final construire un site responsive (ou un web app optimis\u00e9e mobile) performant qui propose la meilleure exp\u00e9rience utilisateur possible sur n\u2019importe quelle plateforme et navigateur. Il nous suffit d\u2019\u00eatre malins et d\u2019utiliser des techniques d\u2019am\u00e9lioration progressive pour nous assurer que les utilisatrices avec des appareils qui ne vont pas supporter toutes ces jolies nouvelles APIS ne soient pas frustr\u00e9es \u00e0 cause d\u2019une page blanche ou d\u2019un manque de fonctionnalit\u00e9.<\/p>\n<p>Je ne suis qu\u2019une simple designeuse, je ne suis qu\u2019un tout petit maillon de la cha\u00eene. C\u2019est d\u00e9sormais \u00e0 vous de construire, jouer avec les APIs et partager ce que vous allez construire avec ces technologies. Le futur du web dans le navigateur mobile est prometteur, souvenez-vous-en !<\/p>\n<p><a href=\"https:\/\/twitter.com\/geoffrey_crofte?lang=fr\">(et un gros merci \u00e0 Geoffrey pour la relecture)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Notifications, g\u00e9olocalisation, support de l&rsquo;hors ligne, acc\u00e8s aux m\u00e9dias pour cr\u00e9er un syst\u00e8me de vid\u00e9o conf\u00e9rence dans le navigateur ou communication d&rsquo;URLs en Bluetooth et installation sous forme de Progressive Web App sur l&rsquo;\u00e9cran d&rsquo;accueil de nos mobiles : petit tour d&rsquo;horizon tr\u00e8s d\u00e9taill\u00e9 de ce dont sont capables nos navigateurs mobiles aujourd&rsquo;hui. Au final, avons nous encore besoin d&rsquo;une application pour faire \u00e7a ? <\/p>\n","protected":false},"author":3,"featured_media":6102,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[70],"tags":[],"class_list":["post-6074","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile-responsive-web-design"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Les super pouvoirs des navigateurs mobiles - par St\u00e9phanie Walter - UX Researcher &amp; Designer<\/title>\n<meta name=\"description\" content=\"Notifications, g\u00e9olocalisation, support de l&#039;hors ligne, mais aussi installation sur l&#039;\u00e9cran d&#039;accueil et acc\u00e8s aux m\u00e9dias : \u00e9volution des capacit\u00e9s de nos navigateurs mobiles\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Les super pouvoirs des navigateurs mobiles - par St\u00e9phanie Walter - UX Researcher &amp; Designer\" \/>\n<meta property=\"og:description\" content=\"Notifications, g\u00e9olocalisation, support de l&#039;hors ligne, mais aussi installation sur l&#039;\u00e9cran d&#039;accueil et acc\u00e8s aux m\u00e9dias : \u00e9volution des capacit\u00e9s de nos navigateurs mobiles\" \/>\n<meta property=\"og:url\" content=\"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/\" \/>\n<meta property=\"og:site_name\" content=\"St\u00e9phanie Walter - Senior UX designer, experte mobile, conf\u00e9rences et articles.\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-21T13:15:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-20T20:14:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/navigateurs-mobiles.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"850\" \/>\n\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"St\u00e9phanie Walter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/bsky.app\/profile\/stephaniewalter.bsky.social\" \/>\n<meta name=\"twitter:site\" content=\"@walterstephanie\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"St\u00e9phanie Walter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"45 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/\",\"url\":\"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/\",\"name\":\"Les super pouvoirs des navigateurs mobiles - par St\u00e9phanie Walter - UX Researcher & Designer\",\"isPartOf\":{\"@id\":\"https:\/\/stephaniewalter.design\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/navigateurs-mobiles.jpg\",\"datePublished\":\"2016-12-21T13:15:35+00:00\",\"dateModified\":\"2019-05-20T20:14:39+00:00\",\"author\":{\"@id\":\"https:\/\/stephaniewalter.design\/fr\/#\/schema\/person\/643a9e5afcb1e550b6f4dca290fbf4cf\"},\"description\":\"Notifications, g\u00e9olocalisation, support de l'hors ligne, mais aussi installation sur l'\u00e9cran d'accueil et acc\u00e8s aux m\u00e9dias : \u00e9volution des capacit\u00e9s de nos navigateurs mobiles\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/#primaryimage\",\"url\":\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/navigateurs-mobiles.jpg\",\"contentUrl\":\"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/navigateurs-mobiles.jpg\",\"width\":850,\"height\":350,\"caption\":\"Les super pouvoirs des navigateurs mobiles\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/stephaniewalter.design\/fr\/#website\",\"url\":\"https:\/\/stephaniewalter.design\/fr\/\",\"name\":\"St\u00e9phanie Walter - Senior UX designer, experte mobile, conf\u00e9rences et articles.\",\"description\":\"Je partage ici mes conseils, mes ressources et outils sur la conception centr\u00e9e utilisateur, la recherche et tests utilisateur, le design de produits, la strat\u00e9gie mobile, l&#039;utilisabilit\u00e9 et l&#039;accessibilit\u00e9.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/stephaniewalter.design\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/stephaniewalter.design\/fr\/#\/schema\/person\/643a9e5afcb1e550b6f4dca290fbf4cf\",\"name\":\"St\u00e9phanie Walter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/stephaniewalter.design\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3311148a94caa2e5ae146ff1cdf9aaf3a0127a7db0337d8c8cbbfc4a425cab0e?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3311148a94caa2e5ae146ff1cdf9aaf3a0127a7db0337d8c8cbbfc4a425cab0e?s=96&d=retro&r=g\",\"caption\":\"St\u00e9phanie Walter\"},\"description\":\"UX Researcher &amp; Product Designer. Mobile Expert. Public speaker. Blog writer. Google Dev Expert Web Platform and Product Design (GDE)\",\"sameAs\":[\"https:\/\/stephaniewalter.design\/\",\"https:\/\/www.linkedin.com\/in\/stephaniewalterpro\/\",\"https:\/\/x.com\/https:\/\/bsky.app\/profile\/stephaniewalter.bsky.social\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Les super pouvoirs des navigateurs mobiles - par St\u00e9phanie Walter - UX Researcher & Designer","description":"Notifications, g\u00e9olocalisation, support de l'hors ligne, mais aussi installation sur l'\u00e9cran d'accueil et acc\u00e8s aux m\u00e9dias : \u00e9volution des capacit\u00e9s de nos navigateurs mobiles","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/","og_locale":"fr_FR","og_type":"article","og_title":"Les super pouvoirs des navigateurs mobiles - par St\u00e9phanie Walter - UX Researcher & Designer","og_description":"Notifications, g\u00e9olocalisation, support de l'hors ligne, mais aussi installation sur l'\u00e9cran d'accueil et acc\u00e8s aux m\u00e9dias : \u00e9volution des capacit\u00e9s de nos navigateurs mobiles","og_url":"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/","og_site_name":"St\u00e9phanie Walter - Senior UX designer, experte mobile, conf\u00e9rences et articles.","article_published_time":"2016-12-21T13:15:35+00:00","article_modified_time":"2019-05-20T20:14:39+00:00","og_image":[{"width":850,"height":350,"url":"https:\/\/stephaniewalter.design\/wp-content\/blogs.dir\/2\/files\/2016\/12\/navigateurs-mobiles.jpg","type":"image\/jpeg"}],"author":"St\u00e9phanie Walter","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/bsky.app\/profile\/stephaniewalter.bsky.social","twitter_site":"@walterstephanie","twitter_misc":{"\u00c9crit par":"St\u00e9phanie Walter","Dur\u00e9e de lecture estim\u00e9e":"45 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/","url":"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/","name":"Les super pouvoirs des navigateurs mobiles - par St\u00e9phanie Walter - UX Researcher & Designer","isPartOf":{"@id":"https:\/\/stephaniewalter.design\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/#primaryimage"},"image":{"@id":"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/#primaryimage"},"thumbnailUrl":"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/navigateurs-mobiles.jpg","datePublished":"2016-12-21T13:15:35+00:00","dateModified":"2019-05-20T20:14:39+00:00","author":{"@id":"https:\/\/stephaniewalter.design\/fr\/#\/schema\/person\/643a9e5afcb1e550b6f4dca290fbf4cf"},"description":"Notifications, g\u00e9olocalisation, support de l'hors ligne, mais aussi installation sur l'\u00e9cran d'accueil et acc\u00e8s aux m\u00e9dias : \u00e9volution des capacit\u00e9s de nos navigateurs mobiles","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/stephaniewalter.design\/fr\/blog\/super-pouvoirs-navigateurs-mobiles\/#primaryimage","url":"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/navigateurs-mobiles.jpg","contentUrl":"https:\/\/stephaniewalter.design\/fr\/files\/2016\/12\/navigateurs-mobiles.jpg","width":850,"height":350,"caption":"Les super pouvoirs des navigateurs mobiles"},{"@type":"WebSite","@id":"https:\/\/stephaniewalter.design\/fr\/#website","url":"https:\/\/stephaniewalter.design\/fr\/","name":"St\u00e9phanie Walter - Senior UX designer, experte mobile, conf\u00e9rences et articles.","description":"Je partage ici mes conseils, mes ressources et outils sur la conception centr\u00e9e utilisateur, la recherche et tests utilisateur, le design de produits, la strat\u00e9gie mobile, l&#039;utilisabilit\u00e9 et l&#039;accessibilit\u00e9.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/stephaniewalter.design\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/stephaniewalter.design\/fr\/#\/schema\/person\/643a9e5afcb1e550b6f4dca290fbf4cf","name":"St\u00e9phanie Walter","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/stephaniewalter.design\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3311148a94caa2e5ae146ff1cdf9aaf3a0127a7db0337d8c8cbbfc4a425cab0e?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3311148a94caa2e5ae146ff1cdf9aaf3a0127a7db0337d8c8cbbfc4a425cab0e?s=96&d=retro&r=g","caption":"St\u00e9phanie Walter"},"description":"UX Researcher &amp; Product Designer. Mobile Expert. Public speaker. Blog writer. Google Dev Expert Web Platform and Product Design (GDE)","sameAs":["https:\/\/stephaniewalter.design\/","https:\/\/www.linkedin.com\/in\/stephaniewalterpro\/","https:\/\/x.com\/https:\/\/bsky.app\/profile\/stephaniewalter.bsky.social"]}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/posts\/6074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/comments?post=6074"}],"version-history":[{"count":0,"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/posts\/6074\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/media\/6102"}],"wp:attachment":[{"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/media?parent=6074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/categories?post=6074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stephaniewalter.design\/fr\/wp-json\/wp\/v2\/tags?post=6074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}