Handler API starten

Legen Sie fest, wie Ihre App gestartet wird.

Mit der Launch Handler API kannst du steuern, wie deine App gestartet wird, z. B. ob ein vorhandenes oder ein neues Fenster verwendet wird und ob im ausgewählten Fenster die Start-URL aufgerufen wird. Wie bei der File Handing API wird auch hier ein LaunchParams-Objekt im window.launchQueue der gestarteten Seite in die Warteschlange gestellt.

Aktueller Status

Step Status
1. Erklärende Mitteilung erstellen Abschließen
2. Ersten Entwurf der Spezifikation erstellen Abschließen
3. Feedback einholen und Design iterieren Abschließen
4. Ursprungstest. Abschließen
5. Launch Abschließen

Launch Handler API verwenden

Unterstützte Browser

Launch-Handler ist nur unter ChromeOS verfügbar.

Unterstützte Browser

  • 110
  • 110
  • x
  • x

Quelle

Interfaces

Die Launch Handler API definiert zwei neue Schnittstellen.

LaunchParams : Ein Objekt, das die targetURL enthält, die vom Nutzer verarbeitet werden soll. LaunchQueue : Warteschlangen werden gestartet, bis sie vom angegebenen Nutzer verarbeitet werden.

Manifest-Mitglied launch_handler

Wenn du das Startverhalten deiner App deklarativ angeben möchtest, füge deinem Manifest das Manifestmitglied launch_handler hinzu. Es hat ein untergeordnetes Feld namens client_mode. Damit können Sie steuern, ob ein neuer oder ein vorhandener Client gestartet und ob dieser Client aufgerufen werden soll. Das folgende Beispiel zeigt eine Datei mit beispielhaften Werten, mit denen alle Starts immer an einen neuen Client weitergeleitet werden.

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

Wenn kein Wert angegeben ist, wird launch_handler standardmäßig auf {"client_mode": "auto"} gesetzt. Für die Unterfelder sind folgende Werte zulässig:

  • client_mode:
    • navigate-new: In einem Webanwendungsfenster wird ein neuer Browserkontext erstellt, um die Ziel-URL des Starts zu laden.
    • navigate-existing: Die zuletzt mit dem Browserkontext in einem Webanwendungsfenster interagierte wird zur Ziel-URL des Starts geleitet.
    • focus-existing: Für den Start wird die letzte Interaktion mit dem Browserkontext in einem Webanwendungsfenster ausgewählt. Ein neues LaunchParams-Objekt, bei dem targetURL auf die Start-URL festgelegt ist, wird in die Warteschlange window.launchQueue des Dokuments gestellt.
    • auto: Die Funktionsweise hängt vom User-Agent ab, um zu entscheiden, was für die Plattform am besten funktioniert. Mobilgeräte unterstützen beispielsweise nur einzelne Clients und verwenden existing-client, während Desktopgeräte mehrere Fenster unterstützen und navigate-new verwenden, um Datenverluste zu vermeiden.

Für das Attribut client_mode kann auch eine Liste (Array) von Werten verwendet werden, wobei der erste gültige Wert verwendet wird. Auf diese Weise können neue Werte zur Spezifikation hinzugefügt werden, ohne die Abwärtskompatibilität mit vorhandenen Implementierungen zu beeinträchtigen.

Wenn beispielsweise der hypothetische Wert "focus-matching-url" hinzugefügt wird, geben Websites "client_mode": ["focus-matching-url", "navigate-existing"] an, um das Verhalten älterer Browser weiter zu steuern, die "focus-matching-url" nicht unterstützt haben.

window.launchQueue verwenden

Im folgenden Code extrahiert die Funktion extractSongID() ein songID aus der URL, die beim Start übergeben wurde. Damit wird ein Song in der PWA eines Musikplayers abgespielt.

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

Demo

In der Demo des PWA-Launch-Handlers können Sie sich eine Demo der Launch Handler API in Aktion ansehen. Sehen Sie sich den Quellcode der Anwendung an, um zu sehen, wie die Launch Handler API verwendet wird.

  1. Installieren Sie die Musicr 2.0 App auf einem ChromeOS-Gerät.
  2. Senden Sie sich selbst einen Link in einer Chatanwendung im Format https://launch-handler.glitch.me?track=https://example.com/music.mp3. Sie können https://example.com/music.mp3 für jede URL anpassen, die auf eine Audiodatei verweist, z. B. https://launch-handler.glitch.me?track=https://cdn.glitch.me/3e952c9c-4d6d-4de4-9873-23cf976b422e%2Ffile_example_MP3_700KB.mp3?v=1638795977190.
  3. Klicke auf den Link in deiner Chat-App und sieh nach, wie Musicr 2.0 geöffnet wird und den Titel wiedergibt.
  4. Wenn Sie noch einmal auf den Link in der Chat-App klicken, werden Sie feststellen, dass Sie keine zweite Instanz von Musicr 2.0 erhalten.

Feedback

Das Chromium-Team möchte mehr über deine Erfahrungen mit der Launch Handler API erfahren.

Erzähl uns etwas über das API-Design

Gibt es etwas an der API, das nicht wie erwartet funktioniert? Oder fehlen Methoden oder Eigenschaften, die Sie zur Umsetzung Ihrer Idee benötigen? Haben Sie eine Frage oder einen Kommentar zum Sicherheitsmodell? Reichen Sie ein Spezifikationsproblem im entsprechenden GitHub-Repository ein oder fügen Sie Ihre Gedanken zu einem vorhandenen Problem hinzu.

Problem mit der Implementierung melden

Hast du einen Fehler bei der Implementierung von Chromium gefunden? Oder weicht die Implementierung von der Spezifikation ab? Melden Sie einen Fehler unter new.crbug.com. Geben Sie so viele Details wie möglich und eine einfache Anleitung zur Reproduktion an. Geben Sie dann Blink>AppManifest in das Feld Komponenten ein. Glitch eignet sich hervorragend, um schnelle und einfache Reproduktionen zu teilen.

Unterstützung für die API anzeigen

Möchtest du die Launch Handler API verwenden? Dein öffentlicher Support hilft dem Chromium-Team, Funktionen zu priorisieren, und zeigt anderen Browseranbietern, wie wichtig der Support für sie ist.

Schicken Sie uns unter dem Hashtag #LaunchHandler einen Tweet an @ChromiumDev und teilen Sie uns mit, wo und wie Sie ihn verwenden.

Nützliche Links