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 une première ébauche de la spécification | Fin |
3. Recueillir des commentaires et itérer sur la conception | Terminé |
4. Évaluation Origin | Terminé |
5. Lancement | Fin |
Utiliser l'API Launch Handler
Prise en charge des navigateurs
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 consommateur 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 cette valeur n'est pas spécifiée, launch_handler
prend la valeur par défaut de {"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 contexte de navigation avec lequel vous avez interagi le plus récemment dans une fenêtre d'application Web est choisi pour gérer le lancement. Un nouvel objetLaunchParams
dont letargetURL
est défini sur l'URL de lancement sera mis en file d'attente dans lewindow.launchQueue
du document.auto
: le comportement dépend de l'agent utilisateur, qui décide de ce qui fonctionne le mieux pour la plate-forme. Par exemple, les appareils mobiles ne prennent en charge que des clients uniques et utilisentexisting-client
, tandis que les ordinateurs de bureau prennent en charge plusieurs fenêtres et utilisentnavigate-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. Il permet de 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
Vous pouvez voir une démonstration de l'API Launch Handler en action dans la démonstration du Launch Handler PWA. Veillez à consulter le code source de l'application pour voir comment elle utilise l'API Launch Handler.
- Installez l'application Musicr 2.0.
- Envoyez-vous un lien dans une application de chat au format
https://launch-handler.glitch.me?track=https://example.com/music.mp3
. (Vous pouvez personnaliserhttps://example.com/music.mp3
pour toute URL pointant vers un fichier audio, par exemplehttps://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190
). - Cliquez sur le lien dans votre application de chat. Vous verrez alors Musicr 2.0 s'ouvrir et lire le titre.
- 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 manque-t-il des méthodes ou des propriétés dont vous avez besoin pour implémenter 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 soutien public 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 en utilisant le hashtag #LaunchHandler
et indiquez-nous où et comment vous l'utilisez.