Avvia API gestore

Controlla come viene avviata l'app.

L'API Launch Handler ti consente di controllare la modalità di avvio dell'app, ad esempio se utilizza una finestra esistente o una nuova e se la finestra scelta viene indirizzata all'URL di avvio. Come per l'API File Handling, anche in questo caso viene inserito in coda un oggetto LaunchParams nel window.launchQueue della pagina avviata.

Stato attuale

Passaggio Stato
1. Creare una spiegazione Completato
2. Crea la bozza iniziale delle specifiche Completato
3. Raccogli feedback e itera il design Completa
4. Prova dell'origine. Completa
5. Lancio Completato

Utilizzare l'API Launch Handler

Supporto browser

Interfacce

L'API Launch Handler definisce due nuove interfacce.

LaunchParams : un oggetto contenente l'targetURL da gestire da parte del consumer. LaunchQueue : le code vengono avviate finché non vengono gestite dal consumatore specificato.

Il membro del file manifest launch_handler

Per specificare in modo dichiarativo il comportamento di avvio dell'app, aggiungi il membro del manifest launch_handler al manifest. Ha un sottocampo chiamato client_mode. Consente di controllare se avviare un client nuovo o esistente e se spostarsi in questo client. L'esempio seguente mostra un file con valori esemplari che indirizzerebbero sempre tutti gli avvii a un nuovo client.

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

Se non specificato, il valore predefinito di launch_handler è {"client_mode": "auto"}. I valori consentiti per i sottocampi sono:

  • client_mode:
    • navigate-new: in una finestra dell'app web viene creato un nuovo contesto di navigazione per caricare l'URL di destinazione dell'avvio.
    • navigate-existing: il contesto di navigazione con cui è stata eseguita l'interazione più recente in una finestra dell'app web viene indirizzato all'URL di destinazione del lancio.
    • focus-existing: viene scelto il contesto di navigazione con cui è stata eseguita l'interazione più recente in una finestra dell'app web per gestire l'avvio. Un nuovo oggetto LaunchParams con il relativo targetURL impostato sull'URL di avvio verrà messo in coda in window.launchQueue del documento.
    • auto: il comportamento dipende dall'user agent, che decide cosa funziona meglio per la piattaforma. Ad esempio, i dispositivi mobili supportano un solo client e utilizzano existing-client, mentre i dispositivi desktop supportano più finestre e utilizzano navigate-new per evitare la perdita di dati.

La proprietà client_mode accetta anche un elenco (array) di valori, in cui verrà utilizzato il primo valore valido. In questo modo è possibile aggiungere nuovi valori alla specifica senza interrompere la compatibilità con le versioni precedenti con le implementazioni esistenti.

Ad esempio, se venisse aggiunto il valore ipotetico "focus-matching-url", i siti specificano "client_mode": ["focus-matching-url", "navigate-existing"] per continuare a controllare il comportamento dei browser meno recenti che non supportavano "focus-matching-url".

Utilizzare window.launchQueue

Nel codice seguente, la funzione extractSongID() estrae un songID dall'URL passato all'avvio. Viene utilizzato per riprodurre un brano in una PWA di un lettore musicale.

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

Demo

Puoi vedere una demo dell'API Launch Handler in azione nella demo di PWA Launch Handler. Assicurati di controllare il codice sorgente dell'applicazione per vedere come utilizza l'API Launch Handler.

  1. Installa l'app Musicr 2.0.
  2. Inviati un link al modulo in un'applicazione di chat https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3. Puoi personalizzare https://example.com/music.mp3 per qualsiasi URL che rimandi a un file audio, ad esempio https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav.
  3. Fai clic sul link nell'app di chat e noterai che Musicr 2.0 si apre e riproduce la traccia.
  4. Fai di nuovo clic sul link nell'app di chat e noterai che non riceverai una seconda istanza di Musicr 2.0.

Feedback

Il team di Chromium vuole conoscere le tue esperienze con l'API Launch Handler.

Descrivi la progettazione dell'API

C'è qualcosa nell'API che non funziona come previsto? Oppure mancano metodi o proprietà che ti servono per implementare la tua idea? Hai una domanda o un commento sul modello di sicurezza? Segnala un problema relativo alle specifiche nel repository GitHub corrispondente o aggiungi i tuoi commenti a un problema esistente.

Segnalare un problema relativo all'implementazione

Hai trovato un bug nell'implementazione di Chromium? L'implementazione è diversa dalla specifica? Segnala un bug all'indirizzo new.crbug.com. Assicurati di includere il maggior numero di dettagli possibile, le istruzioni per la riproduzione e inserisci Blink>AppManifest nella casella Componenti.

Mostra il tuo sostegno all'API

Intendi utilizzare l'API Launch Handler? Il tuo supporto pubblico aiuta il team di Chromium a dare la priorità alle funzionalità e mostra ad altri fornitori di browser quanto sia fondamentale supportarle.

Invia un tweet a @ChromiumDev utilizzando l'hashtag #LaunchHandler e facci sapere dove e come lo utilizzi.

Link utili