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
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 objetLaunchParams
dont letargetURL
est défini sur l'URL de lancement sera mis en file d'attente dans le fichierwindow.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 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. 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.
- 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 comment Musicr 2.0 s'ouvre et lit 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 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.