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 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: Nicht unterstützt.

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 : Die Warteschlangen werden gestartet, bis sie vom angegebenen Verbraucher verarbeitet werden.

Das Manifest-Element launch_handler

Wenn Sie das Startverhalten Ihrer App deklarativ angeben möchten, fügen Sie dem Manifest das Manifest-Element launch_handler hinzu. 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 nicht angegeben, lautet die Standardeinstellung für launch_handler {"client_mode": "auto"}. Zulässige Werte für die untergeordneten Felder:

  • 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 Browserkontext, mit dem zuletzt in einem Web-App-Fenster interagiert wurde, wird zur Ziel-URL der Auslösung weitergeleitet.
    • 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: 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 die Property client_mode ist auch eine Liste (Array) von Werten zulässig. 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 gefährden.

Wenn beispielsweise der hypothetische Wert "focus-matching-url" hinzugefügt würde, 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ützen.

window.launchQueue verwenden

Im folgenden Code extrahiert die Funktion extractSongID() einen songID aus der URL, die beim Start übergeben wurde. Damit wird ein Titel in einer 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. 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 in der Chat-App auf den Link. Musicr 2.0 wird geöffnet und der Titel wird abgespielt.
  4. Klicken Sie noch einmal auf den Link in Ihrer Chat-App. Sie sehen, dass keine zweite Instanz von Musicr 2.0 geöffnet wird.

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 für die Implementierung 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 unterscheidet sich die Implementierung von der Spezifikation? Melden Sie den Fehler unter new.crbug.com. Geben Sie dabei so viele Details wie möglich an, geben Sie eine Anleitung zur Reproduktion an und geben Sie Blink>AppManifest in das Feld Components ein. Glitch eignet sich hervorragend, um schnelle Reproduktionen 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 zu priorisieren, und zeigt anderen Browseranbietern, wie wichtig der Support für sie ist.

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

Nützliche Links