Lancer l'API du gestionnaire

Contrôler le lancement de votre application

L'API Launch Handler vous permet de contrôler le lancement de votre application, par exemple, si elle utilise une fenêtre existante ou une nouvelle fenêtre, et si la fenêtre choisie accède à l'URL de lancement. Comme avec l'API File Handling, cela met également en file d'attente un objet LaunchParams dans le window.launchQueue de la page lancée.

État actuel

Étape État
1. Créer un message d'explication Fin
2. Créer l'ébauche initiale de la spécification Fin
3. Recueillir les commentaires et itérer la conception Terminé
4. Évaluation Origin Terminé
5. Lancement Fin

Utiliser l'API Launch Handler

Prise en charge des navigateurs

Navigateurs pris en charge

  • Chrome: 110.
  • Edge : 110.
  • Firefox : non compatible.
  • Safari : non compatible.

Source

Interfaces

L'API Launch Handler définit deux nouvelles interfaces.

LaunchParams : objet contenant le targetURL à gérer par le consommateur. LaunchQueue : les files d'attente sont lancées jusqu'à ce qu'elles soient gérées par le client spécifié.

Membre du fichier manifeste launch_handler

Pour spécifier de manière déclarative le comportement de lancement de votre application, ajoutez le membre de fichier manifeste launch_handler à votre fichier manifeste. Il comporte un sous-champ appelé client_mode. Il vous permet de contrôler si un client nouveau ou existant doit être lancé et si ce client doit être navigué. L'exemple suivant montre un fichier avec des valeurs exemplaires qui redirigeraient toujours tous les lancements vers un nouveau client.

{
  "launch_handler": {
    "client_mode": "navigate-new"
  }
}

Si aucune valeur n'est spécifiée, la valeur par défaut de launch_handler est {"client_mode": "auto"}. Les valeurs autorisées pour les sous-champs sont les suivantes:

  • client_mode :
    • navigate-new: un nouveau contexte de navigation est créé dans une fenêtre d'application Web pour charger l'URL cible du lancement.
    • navigate-existing: le contexte de navigation avec lequel vous avez interagi le plus récemment dans une fenêtre d'application Web est redirigé vers l'URL cible du lancement.
    • focus-existing: le dernier utilisateur ayant interagi avec le contexte de navigation dans une fenêtre d'application Web est choisi pour gérer le lancement. Un nouvel objet LaunchParams dont le targetURL est défini sur l'URL de lancement sera mis en file d'attente dans le fichier window.launchQueue du document.
    • auto: c'est au user-agent de décider ce qui fonctionne le mieux pour la plate-forme. Par exemple, les appareils mobiles ne prennent en charge que des clients uniques et utilisent existing-client, tandis que les ordinateurs de bureau prennent en charge plusieurs fenêtres et utilisent navigate-new pour éviter toute perte de données.

La propriété client_mode accepte également une liste (tableau) de valeurs, où la première valeur valide sera utilisée. Cela permet d'ajouter de nouvelles valeurs à la spécification sans endommager la rétrocompatibilité avec les implémentations existantes.

Par exemple, si la valeur hypothétique "focus-matching-url" était ajoutée, les sites spécifieraient "client_mode": ["focus-matching-url", "navigate-existing"] pour continuer à contrôler le comportement des anciens navigateurs qui ne sont pas compatibles avec "focus-matching-url".

Utiliser window.launchQueue

Dans le code suivant, la fonction extractSongID() extrait un songID à partir de l'URL transmise au démarrage. Utilisé pour lire un titre dans une PWA de lecteur de musique.

if ('launchQueue' in window) {
  launchQueue.setConsumer((launchParams) => {
    if (launchParams.targetURL) {
      const songID = extractSongId(launchParams.targetURL);
      if (songID) {
        playSong(songID);
      }
    }
  });
}

Démo

Pour voir une démonstration de l'API Launch Handler, consultez la démonstration du gestionnaire de lancement de PWA. Veillez à consulter le code source de l'application pour voir comment elle utilise l'API Launch Handler.

  1. Installez l'application Musicr 2.0.
  2. Envoyez-vous un lien dans une application de chat au format https://launch-handler.glitch.me?track=https://example.com/music.mp3. (Vous pouvez personnaliser https://example.com/music.mp3 pour toute URL pointant vers un fichier audio, par exemple https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190).
  3. Cliquez sur le lien dans votre application de chat. Vous verrez comment Musicr 2.0 s'ouvre et lit le titre.
  4. Cliquez à nouveau sur le lien dans votre application de chat. Vous ne verrez pas une deuxième instance de Musicr 2.0.

Commentaires

L'équipe Chromium souhaite connaître votre expérience avec l'API Launch Handler.

Parlez-nous de la conception de l'API

L'API ne fonctionne-t-elle pas comme prévu ? Ou s'il manque des méthodes ou des propriétés dont vous avez besoin pour mettre en œuvre votre idée ? Vous avez une question ou un commentaire sur le modèle de sécurité ? Signalez un problème de spécification dans le dépôt GitHub correspondant ou ajoutez vos commentaires à un problème existant.

Signaler un problème d'implémentation

Avez-vous trouvé un bug dans l'implémentation de Chromium ? Ou l'implémentation est-elle différente de la spécification ? Signalez un bug sur new.crbug.com. Veillez à inclure autant de détails que possible, des instructions pour reproduire le problème et saisissez Blink>AppManifest dans le champ Composants. Glitch est idéal pour partager des reproductions rapides.

Afficher la compatibilité avec l'API

Prévoyez-vous d'utiliser l'API Launch Handler ? Votre assistance publique aide l'équipe Chromium à hiérarchiser les fonctionnalités et montre aux autres fournisseurs de navigateurs à quel point il est essentiel de les prendre en charge.

Envoyez un tweet à @ChromiumDev avec le hashtag #LaunchHandler et indiquez-nous où et comment vous l'utilisez.

Liens utiles