Handler API starten

Lege fest, wie deine App gestartet wird.

Mit der Launch Handler API können Sie steuern, wie Ihre App gestartet wird. Sie können beispielsweise festlegen, ob ein vorhandenes oder ein neues Fenster verwendet wird und ob über das ausgewählte Fenster die Start-URL aufgerufen wird. Wie bei der File Handing API wird auch hier ein LaunchParams-Objekt in die window.launchQueue der gestarteten Seite gestellt.

Aktueller Status

Step Status
1. Erklärende Erklärung 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

Der 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 targetURL enthält, das vom Nutzer verarbeitet werden soll. LaunchQueue : Startet die Warteschlange, bis sie vom angegebenen Nutzer verarbeitet werden.

Das Manifestmitglied launch_handler

Wenn Sie das Startverhalten Ihrer App deklarativ angeben möchten, fügen Sie Ihrem Manifest das Manifestmitglied launch_handler hinzu. Es hat ein Unterfeld namens client_mode. Damit können Sie steuern, ob ein neuer oder vorhandener Client gestartet und ob dieser Client aufgerufen werden soll. Das folgende Beispiel zeigt eine Datei mit beispielhaften Werten, die immer alle Starts an einen neuen Client weiterleiten.

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

Wenn keine Vorgabe erfolgt, wird für launch_handler standardmäßig {"client_mode": "auto"} verwendet. Die zulässigen Werte für die Unterfelder sind:

  • client_mode:
    • navigate-new: In einem Web-App-Fenster wird ein neuer Browserkontext erstellt, um die Ziel-URL des Starts zu laden.
    • navigate-existing: Der Nutzer, der zuletzt mit dem Browserkontext im Fenster einer Web-App interagiert hat, wird zur Ziel-URL des Starts weitergeleitet.
    • focus-existing: Der zuletzt mit dem Browserkontext interagierte Nutzer in einem Web-App-Fenster, der für den Start ausgewählt wurde. Ein neues LaunchParams-Objekt, dessen targetURL auf die Start-URL festgelegt ist, wird in die window.launchQueue des Dokuments aufgenommen.
    • auto: Der User-Agent entscheidet über das Verhalten, was für die Plattform am besten funktioniert. Mobilgeräte unterstützen beispielsweise nur einzelne Clients und würden existing-client verwenden, während Desktopgerä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. Dabei wird der erste gültige Wert verwendet. So können der Spezifikation neue Werte 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, würden Websites "client_mode": ["focus-matching-url", "navigate-existing"] angeben, um weiterhin das Verhalten älterer Browser 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 wird. Damit wird ein Titel in einer Musikplayer-PWA 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 „PWA Launch Handler“. Sehen Sie sich den Quellcode der Anwendung an, um zu sehen, wie sie die Launch Handler API verwendet.

  1. Installieren Sie die Musicr 2.0 App auf einem ChromeOS-Gerät.
  2. Senden Sie sich selbst einen Link in einer Chatanwendung des Formulars https://launch-handler.glitch.me?track=https://example.com/music.mp3. Du kannst 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. Klicken Sie auf den Link in der Chat-App und beobachten Sie, wie Musicr 2.0 den Titel öffnet und abspielt.
  4. Klicken Sie noch einmal auf den Link in der Chat-App. Sie werden keine zweite Instanz von Musicr 2.0 erhalten.

Feedback

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

Informationen zum API-Design

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

Problem bei der Implementierung melden

Haben Sie einen Fehler bei der Implementierung von Chromium gefunden? Oder unterscheidet sich die Implementierung von der Spezifikation? Melden Sie einen Fehler unter new.crbug.com. Geben Sie dabei so viele Details wie möglich und eine einfache Anleitung zum Reproduzieren an und geben Sie Blink>AppManifest in das Feld Komponenten ein. Mit Glitch lassen sich schnell und einfach Reproduktionen durchführen.

Unterstützung für die API zeigen

Beabsichtigen Sie, die Launch Handler API zu verwenden? Ihre öffentliche Unterstützung hilft dem Chromium-Team, Funktionen zu priorisieren, und zeigt anderen Browseranbietern, wie wichtig es ist, sie zu unterstützen.

Senden Sie einen Tweet an @ChromiumDev mit dem Hashtag #LaunchHandler und teilen Sie uns mit, wo und wie Sie sie verwenden.

Hilfreiche Links