Contrôlez le lancement de votre application.
L'API Launch Handler vous permet de contrôler le mode de lancement de votre application, par exemple si elle utilise une fenêtre existante ou nouvelle, et si la fenêtre choisie redirige vers l'URL de lancement. Comme avec l'API File Handing, un objet LaunchParams
est également mis en file d'attente dans le fichier window.launchQueue
de la page lancée.
État actuel
Step | État |
---|---|
1. Créer une vidéo explicative | Fin |
2. Créer une ébauche initiale de spécification | Fin |
3. Recueillir les commentaires et itérer sur la conception | Terminé |
4. Phase d'évaluation. | Terminé |
5. Lancement | Fin |
Utiliser l'API Launch Handler
Prise en charge des navigateurs
Le gestionnaire de lancement n'est disponible que sur ChromeOS.
Interfaces
L'API Launch Handler définit deux nouvelles interfaces.
LaunchParams
: objet contenant les targetURL
que le consommateur doit traiter.
LaunchQueue
: les files d'attente se lancent jusqu'à ce qu'elles soient traitées par le consommateur spécifié.
Membre du fichier manifeste launch_handler
Pour spécifier le comportement de lancement de votre application de manière déclarative, ajoutez le membre launch_handler
au fichier manifeste. Elle comporte un sous-champ appelé client_mode
. Elle vous permet de déterminer si un client nouveau ou existant doit être lancé et si ce client doit être parcouru. L'exemple ci-dessous montre un fichier avec des valeurs exemples qui acheminent toujours tous les lancements vers un nouveau client.
{
"launch_handler": {
"client_mode": "navigate-new"
}
}
Si aucune valeur n'est spécifiée, launch_handler
est défini par défaut sur {"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
: la dernière interaction avec le contexte de navigation dans une fenêtre d'application Web permet d'accéder à l'URL cible du lancement.focus-existing
: le dernier élément 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 l'targetURL
est défini sur l'URL de lancement, sera mis en file d'attente dans l'élémentwindow.launchQueue
du document.auto
: le comportement appartient au user-agent afin de déterminer ce qui fonctionne le mieux pour la plate-forme. Par exemple, les appareils mobiles ne prennent en charge que les clients uniques et utilisentexisting-client
, tandis que les ordinateurs de bureau prennent en charge plusieurs fenêtres et utilisentnavigate-new
pour éviter la perte de données.
La propriété client_mode
accepte également une liste (tableau) de valeurs, dans laquelle la première valeur valide sera utilisée. Cela permet d'ajouter de nouvelles valeurs à la spécification sans rompre 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 navigateurs plus anciens qui n'étaient pas compatibles avec "focus-matching-url"
.
Utiliser window.launchQueue
Dans le code suivant, la fonction extractSongID()
extrait un songID
de l'URL transmise lors du lancement. Permet de lire un titre dans la PWA d'un lecteur de musique.
if ('launchQueue' in window) {
launchQueue.setConsumer((launchParams) => {
if (launchParams.targetURL) {
const songID = extractSongId(launchParams.targetURL);
if (songID) {
playSong(songID);
}
}
});
}
Démonstration
Pour voir une démonstration de l'API Launch Handler en action, consultez la démonstration du gestionnaire de lancement des PWA. Veillez à consulter le code source de l'application pour voir comment elle utilise l'API Launch Handler.
- Installez l'application Musicr 2.0 sur un appareil ChromeOS.
- 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 l'application de chat pour voir comment Musicr 2.0 s'ouvre et lit le titre.
- Cliquez à nouveau sur le lien dans votre application de chat et notez que vous n'obtiendrez pas de deuxième instance de Musicr 2.0.
Commentaires
L'équipe Chromium souhaite connaître votre avis sur l'API Launch Handler.
Décrivez-nous la conception de l'API
Y a-t-il un problème avec l'API qui ne fonctionne pas comme prévu ? Ou manque-t-il des méthodes ou des propriétés nécessaires à la mise en œuvre de votre idée ? Vous avez une question ou un commentaire sur le modèle de sécurité ? Signalez un problème spécifique dans le dépôt GitHub correspondant ou ajoutez vos réflexions à un problème existant.
Signaler un problème d'implémentation
Avez-vous repéré un bug dans l'implémentation de Chromium ? Ou la mise en œuvre est-elle différente des spécifications ?
Signalez un bug sur new.crbug.com. Veillez à inclure autant de détails que possible, ainsi que des instructions simples pour le reproduire, puis saisissez Blink>AppManifest
dans la zone Composants.
Glitch est idéal pour partager des reproductions rapides et faciles.
Montrer votre compatibilité avec l'API
Comptez-vous 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 en utilisant le hashtag #LaunchHandler
, et indiquez-nous où et comment vous l'utilisez.