WebAPK sur Android

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. Être installée via un APK permet à votre application de s'afficher dans le lanceur d'applications, dans les paramètres d'application Android et d'enregistrer un ensemble de filtres d'intent.

L'installation d'une PWA sur Android ne consiste pas seulement à 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 le appelons parfois WebAPK. Une installation via un APK permet à votre application de s'afficher dans le lanceur d'applications, dans les paramètres d'application 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 du champ d'application de l'application. Lorsqu'un utilisateur clique sur un lien compris dans le champ d'application de l'application, celle-ci est ouverte au lieu d'être ouverte dans un onglet de navigateur.

Examinez l'élément manifest.json partiel suivant:

"start_url": "/",
"display": "standalone",

Lorsqu'une application Web qui l'utilise est lancée à partir du lanceur d'applications, elle ouvre https://example.com/ en tant qu'application autonome, sans aucun navigateur Chrome.

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 pour https://example.com/read, il est détecté par l'intent et ouvert dans la progressive web app.

Utiliser scope pour restreindre 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 de votre application Web. La propriété scope indique à Android d'ouvrir votre application Web uniquement si l'URL correspond à origin + scope. Elle vous permet de contrôler les URL qui seront gérées par votre application et celles à ouvrir dans le navigateur. Cela est utile lorsque votre application et d'autres contenus qui ne sont pas des applications sur le même domaine.

Examinez l'élément manifest.json partiel suivant:

"scope": "/app/",
"start_url": "/app/",
"display": "standalone",

Lorsqu'elle était lancée à partir du lanceur d'applications, https://example.com/app/ s'ouvre en tant qu'application autonome, sans aucun navigateur Chrome.

Comme précédemment, le WebAPK généré inclurait 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>

Voici quelques exemples:

À faire

https://example.com/app/ - sous /app/

À faire

https://example.com/app/read/book - sous /app/

À éviter

https://example.com/help/ - hors /app/

À éviter

https://example.com/about/ - hors /app/

Consultez scope pour en savoir plus sur scope, ce qui se passe lorsque vous ne le définissez pas et comment l'utiliser pour définir le champ d'application de votre application.

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 au moment de l'installation. Elles doivent ê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éder à l'appareil photo lors du premier chargement, mais attendez que l'utilisateur tente de prendre une photo.

Gérer l'espace de 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 des données, et celles-ci 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 APK Web ont été déplacées dans la section Comment Chrome gère les mises à jour du fichier manifeste de l'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 icônes : 192 px et 512 px pour l'écran de démarrage. Vous nous avez fait savoir que les icônes de l'écran de démarrage étaient trop petites. Les APK Web 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 tant que les icônes recommandées sont fournies.
Que se passe-t-il si l'utilisateur a déjà installé l'application native pour le site ?
Comme pour l'option "Ajouter à l'écran d'accueil", les utilisateurs pourront ajouter un site indépendamment de toute application native. Si vous pensez que les utilisateurs sont susceptibles d'installer les deux, nous vous recommandons de différencier l'icône ou le nom de votre site de votre application native.
L'espace de stockage de mon site installé sera-t-il effacé si l'utilisateur vide le cache de Chrome ?
Oui.
Mon application sera-t-elle réinstallée si je change d'appareil ?
Pas pour le moment, mais nous pensons que c'est un domaine important et nous cherchons des moyens d'y parvenir.
Comment les autorisations sont-elles gérées ? Puis-je voir l'invite Chrome ou celle d'Android ?
Les autorisations seront toujours gérées dans Chrome. Les utilisateurs verront les invites Chrome les invitant à accorder des autorisations et pourront les modifier dans les paramètres Chrome.
Quelles sont les versions d'Android compatibles ?
Les progressive web apps peuvent être installées sur toutes les versions d'Android qui exécutent Chrome pour Android, en particulier Jelly Bean ou version ultérieure.
Cette commande utilise-t-elle WebView ?
Non, le site s'ouvre dans la version de Chrome à partir de laquelle l'utilisateur l'a ajouté.
Puis-je importer les APK créés sur le Play Store ?
Non. Si vous souhaitez importer votre propre APK, consultez la section Activités Web fiables.
Sont-elles listées sur le Play Store ?
Non. Si vous souhaitez importer votre propre fichier APK pour le diffuser sur le Play Store, consultez Activités Web fiables.
Je suis le développeur d'un autre navigateur Android. Puis-je bénéficier de ce processus d'installation fluide ? :
Nous nous efforçons de résoudre ce problème. Nous nous engageons à rendre cette fonctionnalité disponible pour tous les navigateurs sur Android. Nous aurons plus d'informations à ce sujet prochainement.