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". L'installation via un APK permet à votre application d'apparaître dans le lanceur d'applications, dans les paramètres d'application d'Android et d'enregistrer un ensemble de filtres d'intent.

Installer 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 d'apparaître dans le lanceur d'applications, 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 application Web progressive est installée sur Android, elle enregistre un ensemble de filtres d'intent pour toutes les URL relevant du champ d'application. Lorsqu'un utilisateur clique sur un lien relevant du champ d'application, l'application s'ouvre, plutôt que dans un onglet de navigateur.

Prenons l'exemple de 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 Chrome dans le navigateur.

Le WebAPK inclut 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 application Web progressive gère toutes les URL de votre site, vous pouvez ajouter la propriété scope à votre 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 liés à l'application se trouvent sur le même domaine.

Prenons l'manifest.json partielle suivante :

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

Lorsqu'il était lancé à partir du lanceur d'applications, il ouvrait https://example.com/app/ en tant qu'application autonome, sans interface de navigateur.

Comme précédemment, le WebAPK généré inclut un filtre d'intent, mais avec un attribut android:pathPrefix différent dans le 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 : dans /app/

À éviter

https://example.com/help/ - pas dans /app/

À éviter

https://example.com/about/ : ne figure pas dans /app/

Consultez scope pour en savoir plus sur scope, ce qui se passe lorsque vous ne le définissez pas et comment vous pouvez 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'utiliser 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 l'application Web progressive est installée via un APK, Chrome utilise le profil actuel pour stocker toutes les données, et il ne sera pas scindé. 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 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 d'utiliser au moins deux icônes : 192 px et 512 px pour l'écran de démarrage. Vous nous avez fait part de votre avis selon lequel 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 c'est le cas aujourd'hui, les utilisateurs pourront ajouter un site indépendamment de toute application native. Si vous prévoyez 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 vide le cache de Chrome ?
Oui.
Mon application sera-t-elle réinstallée lorsque j'aurai un nouvel appareil ?
Pour le moment, non. Toutefois, nous pensons qu'il s'agit d'un domaine important et nous étudions des solutions pour y parvenir.
Comment les autorisations sont-elles gérées ? Vais-je voir l'invite Chrome ou Android ?
Les autorisations
continueront d'être gérées via Chrome. Les utilisateurs verront les requêtes Chrome pour accorder des autorisations et pourront les modifier dans les paramètres de Chrome.
Quelles sont les versions d'Android compatibles ?
Les progressive web apps peuvent être installées sur toutes les versions d'Android exécutant Chrome pour Android, en particulier Jelly Bean et versions ultérieures.
Utilise-t-il la WebView ?
Non, le site s'ouvre dans la version de Chrome à partir de laquelle l'utilisateur l'a ajouté.
Pouvons-nous importer les APK créés sur le Play Store ?
Non. Si vous souhaitez importer votre propre APK, consultez les activités Web fiables.
Sont-elles listées sur le Play Store ?
Non. Si vous souhaitez importer votre propre APK pour le lister sur le Play Store, consultez les activités Web fiables.
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. Nous vous communiquerons plus d'informations prochainement.