Handler API starten

Festlegen, wie Ihre App gestartet wird

Mit der Launch Handler API können Sie festlegen, wie Ihre App gestartet wird, z. B. ob ein vorhandenes oder ein neues Fenster verwendet wird und ob das ausgewählte Fenster zur Start-URL weitergeleitet wird. Wie bei der File Handling API wird auch hier ein LaunchParams-Objekt in die window.launchQueue der gestarteten Seite eingereiht.

Aktueller Status

Schritt Status
1. Erläuternde Mitteilung erstellen Abschließen
2. Ersten Entwurf der Spezifikation erstellen Abschließen
3. Feedback einholen und Design iterieren Abgeschlossen
4. Ursprungstest. Abgeschlossen
5. Launch Abschließen

Launch Handler API verwenden

Unterstützte Browser

Unterstützte Browser

  • Chrome: 110.
  • Edge: 110.
  • Firefox: Nicht unterstützt.
  • Safari: wird nicht unterstützt.

Quelle

Interfaces

Die Launch Handler API definiert zwei neue Schnittstellen.

LaunchParams: Ein Objekt, das die vom Verbraucher zu verarbeitende targetURL enthält. LaunchQueue: Die Warteschlangen werden gestartet, bis sie vom angegebenen Verbraucher verarbeitet werden.

Manifest-Mitglied launch_handler

Wenn du das Startverhalten deiner App deklarativ angeben möchtest, füge das Manifestmitglied launch_handler hinzu zu deinem Manifest hinzuzufügen. Es hat ein untergeordnetes Feld namens client_mode. Sie können damit festlegen, ob ein neuer oder ein vorhandener Client gestartet werden soll und ob dieser Client gesteuert werden soll. Das folgende Beispiel zeigt eine Datei mit Beispielwerten, bei 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. Zulässige Werte für die untergeordneten Felder:

  • client_mode:
    • navigate-new: In einem Webanwendungsfenster wird ein neuer Browserkontext erstellt, um das Ziel des Starts zu laden. URL
    • navigate-existing: Der Nutzer, der zuletzt mit dem Browserkontext in einer Webanwendung interagiert hat wird zur Ziel-URL des Starts navigiert.
    • focus-existing: Der Browserkontext, mit dem zuletzt in einem Web-App-Fenster interagiert wurde, wird für die Ausführung ausgewählt. Ein neues LaunchParams-Objekt, dessen targetURL auf den Wert Start-URL wird in die window.launchQueue des Dokuments eingereiht.
    • auto: Das Verhalten hängt davon ab, was für die Plattform am besten geeignet ist. Beispielsweise unterstützen Mobilgeräte nur einzelne Clients und würden existing-client verwenden, während Desktop-Geräte mehrere Fenster unterstützen und navigate-new verwenden würden, um Datenverluste zu vermeiden.

Für das Attribut client_mode kann auch eine Liste (Array) von Werten verwendet werden. Der erste gültige Wert ist dabei verwendet. So können der Spezifikation neue Werte hinzugefügt werden, ohne die Abwärtskompatibilität mit vorhandenen Implementierungen zu gefährden.

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

window.launchQueue verwenden

Im folgenden Code extrahiert die Funktion extractSongID() ein songID aus der URL die bei der Markteinführung übergangen wurden. 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

Eine Demo der Launch Handler API in Aktion finden Sie in der Demo für den PWA-Launch Handler. 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.
  2. Senden Sie sich selbst einen Link in einer Chat-Anwendung 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, 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. Klicken Sie noch einmal auf den Link in der Chat-App und stellen Sie fest, dass Sie keine zweite Instanz von Musicr 2.0:

Feedback

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

Informationen zum API-Design

Funktioniert die API nicht wie erwartet? Oder fehlen Methoden oder Eigenschaften, die Sie zur Implementierung Ihrer Idee benötigen? Haben Sie Fragen oder Kommentare zum Sicherheitsmodell? Reichen Sie ein Problem mit der Spezifikation 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 unterscheidet sich die Implementierung von der Spezifikation? Melde einen Fehler unter new.crbug.com. Geben Sie so viele Details wie möglich an, für die Reproduktion und gib Blink>AppManifest in das Feld Komponenten ein. Glitch eignet sich hervorragend, um schnelle Reproduzierungen zu teilen.

Unterstützung für die API anzeigen

Beabsichtigen Sie, die Launch Handler API zu verwenden? Dein öffentlicher Support hilft dem Chromium-Team Funktionen priorisieren und anderen Browseranbietern zeigen, wie wichtig es für ihre Unterstützung ist.

Sende einen Tweet mit dem Hashtag an @ChromiumDev #LaunchHandler und lassen Sie uns wissen, wo und wie Sie sie verwenden.

Nützliche Links