Lorsque l'utilisateur ajoute votre progressive web app à son écran d'accueil sur Android, Chrome génère automatiquement un APK pour vous, que nous appelons parfois WebAPK. L'installation via un APK permet à votre application de s'afficher dans le lanceur d'applications et dans les paramètres d'application d'Android, et d'enregistrer un ensemble de filtres d'intent.
L'installation d'une PWA sur Android ne se limite pas à ajouter la progressive web app à l'écran d'accueil de l'utilisateur. Chrome génère et installe automatiquement un APK spécial de votre application. Nous l'appelons parfois WebAPK. L'installation via un APK permet à votre application de s'afficher dans le lanceur d'applications et dans les paramètres d'application d'Android, et d'enregistrer un ensemble de filtres d'intent.
Pour générer le WebAPK, Chrome examine le fichier manifeste de l'application Web et d'autres métadonnées. Lorsqu'une mise à jour du fichier manifeste est détectée, Chrome doit générer un nouvel APK.
Filtres d'intent Android
Lorsqu'une progressive web app est installée sur Android, elle enregistre un ensemble de filtres d'intent pour toutes les URL incluses dans le champ d'application de l'application. Lorsqu'un utilisateur clique sur un lien qui est inclus dans le champ d'application de l'application, celle-ci s'ouvre au lieu de s'ouvrir dans un onglet de navigateur.
Prenons l'exemple partiel suivant de manifest.json :
"start_url": "/",
"display": "standalone",
Lorsqu'une application Web l'utilisant est lancée à partir du lanceur d'applications, elle ouvre https://example.com/ en tant qu'application autonome, sans aucun chrome de navigateur.
Le WebAPK inclurait les filtres d'intent suivants :
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/" />
</intent-filter>
Si l'utilisateur clique sur un lien dans une application installée vers https://example.com/read, il est intercepté par l'intent et ouvert dans la progressive web app.
Utiliser scope pour limiter les filtres d'intent
Si vous ne souhaitez pas que votre progressive web app gère toutes les URL de votre site, vous pouvez ajouter la propriété scope au fichier manifeste d'application Web. La propriété scope indique à Android de n'ouvrir votre application web
que si l'URL correspond à origin + scope. Elle vous permet de contrôler les URL qui seront gérées par votre application et celles qui doivent être ouvertes dans le navigateur.
Cela est utile lorsque votre application et d'autres contenus non applicatifs se trouvent sur le même domaine.
Prenons l'exemple partiel suivant de manifest.json :
"scope": "/app/",
"start_url": "/app/",
"display": "standalone",
Lorsqu'elle est lancée à partir du lanceur d'applications, elle ouvre https://example.com/app/ en tant qu'application autonome, sans aucun chrome de navigateur.
Comme auparavant, le WebAPK généré inclut un filtre d'intent, mais avec un attribut android:pathPrefix différent dans le fichier AndroidManifest.xml de l'APK :
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/app/" />
</intent-filter>
Examinons quelques exemples :
https://example.com/app/ - dans /app/
https://example.com/app/read/book - dans /app/
https://example.com/help/ - pas dans /app/
https://example.com/about/ - pas dans /app/
Pour en savoir plus sur scope, sur ce qui se passe lorsque vous ne le définissez pas et sur la façon dont vous pouvez l'utiliser pour définir
le champ d'application de votre application, consultez
scope.
Gérer les autorisations
Les autorisations fonctionnent de la même manière que les autres applications Web et ne peuvent pas être demandées lors de l'installation. Elles doivent plutôt être demandées au moment de l'exécution, idéalement uniquement lorsque vous en avez vraiment besoin. Par exemple, ne demandez pas l'autorisation d'accès à l'appareil photo lors du premier chargement, mais attendez que l'utilisateur tente de prendre une photo.
Gérer le stockage et l'état de l'application
Même si la progressive web app est installée via un APK, Chrome utilise le profil actuel pour stocker les données, qui ne seront pas séparées. Cela permet une expérience partagée entre le navigateur et l'application installée. Les cookies sont partagés et actifs, tout stockage côté client est accessible, et le service worker est installé et prêt à l'emploi.
Mettre à jour le WebAPK
Les informations sur la mise à jour d'un WebAPK ont été déplacées vers Comment Chrome gère les mises à jour du fichier manifeste d'application Web.
Questions fréquentes
Quelles icônes sont utilisées pour générer l'écran de démarrage ?
Nous vous recommandons de fournir au moins deux tailles d'icônes pour l'écran de démarrage : 192 pixels et 512 pixels. Vous nous avez fait savoir que les icônes de l'écran de démarrage étaient trop petites. Les WebAPK générés dans Chrome 71 ou version ultérieure affichent une icône plus grande sur l'écran de démarrage. Aucune action n'est requise, à condition que les icônes recommandées soient fournies.
Que se passe-t-il si l'utilisateur a déjà installé l'application native du site ?
Comme pour l'ajout à l'écran d'accueil aujourd'hui, les utilisateurs pourront ajouter un site indépendamment de toute application native. Si vous pensez que les utilisateurs peuvent installer les deux, nous vous recommandons de différencier l'icône ou le nom de votre site de votre application native.
Le stockage de mon site installé sera-t-il effacé si l'utilisateur efface le cache de Chrome ?
Oui.
Mon application sera-t-elle réinstallée lorsque j'obtiendrai un nouvel appareil ?
Pas pour le moment, mais nous pensons qu'il s'agit d'un domaine important et nous étudions des moyens de le faire fonctionner.
Comment les autorisations sont-elles gérées ? Vais-je voir l'invite Chrome ou celle d'Android ?
Les autorisations seront toujours gérées via Chrome. Les utilisateurs verront les invites Chrome pour accorder des autorisations et pourront les modifier dans les paramètres de Chrome.
Sur quelles versions d'Android cela fonctionnera-t-il ?
Les progressive web apps peuvent être installées sur toutes les versions d'Android qui exécutent Chrome pour Android, en particulier Jelly Bean et versions ultérieures.
Cela utilise-t-il WebView ?
Non, le site s'ouvre dans la version de Chrome à partir de laquelle l'utilisateur a ajouté le site.
Pouvons-nous importer les APK créés dans le Play Store ?
Non. Si vous souhaitez importer votre propre APK, consultez Activités Web de confiance.
Sont-elles listées dans le Play Store ?
Non. Si vous souhaitez importer votre propre APK pour le lister dans le Play Store, consultez Activités Web de confiance.
Je suis développeur d'un autre navigateur sur Android. Puis-je bénéficier de ce processus d'installation fluide ?
Nous nous efforçons de la proposer. Nous nous engageons à rendre cette fonctionnalité disponible pour tous les navigateurs sur Android et nous vous fournirons plus d'informations prochainement.