Deeplinks unterstützen

Ab Version 1.2.0 unterstützt Navigation 3 Deeplinks zu Zielen in Ihrer App mit den Klassen DeepLinkRequest und DeepLinkMatcher.

So unterstützen Sie Deeplinks in Ihrer App:

  1. Definieren Sie Intent-Filter in Ihrer AndroidManifest.xml-Datei, um anzugeben, welche URIs Ihre App verarbeiten kann.
  2. Erstellen Sie DeepLinkMatcher Instanzen , um eingehende Anfragen Ihren Navigationsschlüsseln zuzuordnen.
  3. Gleichen Sie eingehende Anfragen in der Methode onCreate oder onNewIntent Ihrer Aktivität ab und aktualisieren Sie den Back-Stack entsprechend.

DeepLinkRequest erstellen

Ein DeepLinkRequest stellt einen eingehenden Deeplink dar. Er enthält einen DeepLinkUri und optional RequestExtras mit zusätzlichen Informationen wie der Intent-Aktion oder dem MIME-Typ.

DeepLinkRequest-Extras angeben

Verwenden Sie die RequestExtras Klasse, um zusätzliche Informationen zum Deeplink zu speichern. Damit Sie Extras typsicher definieren und instanziieren können, bietet die Bibliothek die RequestExtrasKey Schnittstelle und requestExtras DSL.

Außerdem bietet die Bibliothek zwei Extras-Schlüssel und zugehörige Hilfsfunktionen:

  • MimeTypeExtrasKey: Wird verwendet, um einen MIME-Typ String zu speichern.
  • ActionExtrasKey (nur Android): Wird verwendet, um einen Intent-Aktions-String zu speichern.

Wenn Sie eigene benutzerdefinierte Extras definieren möchten, implementieren Sie die RequestExtrasKey Schnittstelle mit einem typisierten generischen Wert:

Sie können auch emptyRequestExtras() verwenden, um eine leere Instanz zu erstellen, oder Extras mit den Operatoren + (plus) und - (minus) kombinieren.

DeepLinkRequest aus einem Intent erstellen

Unter Android können Sie ein DeepLinkRequest direkt aus einem Intent erstellen. Wenn es auf diese Weise erstellt wird, wird das DeepLinkRequest so aufgebaut:

  • Der uri wird aus dem Feld data des Intents kopiert.
  • Wenn nicht null, werden die MIME-Typ- und Aktions-Extras aus den entsprechenden Intent-Feldern festgelegt.
  • Alle intent.extras mit Werten, die nicht null sind, werden als SavedState in DeepLinkRequest.IntentExtrasKey gespeichert.
  • Alle zusätzlichen Extras, die mit dem Parameter extras angegeben wurden, werden hinzugefügt.

Ein DeepLinkMatcher ordnet eingehende DeepLinkRequest-Instanzen Navigationsschlüsseln zu, die dem Back-Stack Ihrer App hinzugefügt werden können. Navigation 3 bietet drei integrierte Matcher: UriDeepLinkMatcher für den musterbasierten URI-Abgleich, StaticKeyDeepLinkMatcher für grundlegende Links und BackStackMatcher zum Erstellen synthetischer Back-Stacks. Die Bibliothek unterstützt auch benutzerdefinierte Matcher für Anwendungsfälle, die nicht von den integrierten Matchern abgedeckt werden.

Weitere Informationen finden Sie unter DeepLinkMatcher erstellen.

Intent-Filter hinzufügen

Damit ein Deeplink Ihre Aktivität starten kann, müssen Sie die entsprechenden <intent-filter> Elemente in der AndroidManifest.xml-Datei Ihrer App definieren. Weitere Informationen finden Sie unter Intent-Filter für eingehende Links hinzufügen.

Eingehende Anfrage abgleichen

Nachdem Sie Ihre erstellt haben DeepLinkMatcher Instanzen, können Sie abgleichen eingehende Anfragen in Ihrer Aktivität.

So gleichen Sie eine eingehende Anfrage ab:

  1. Instanziieren Sie Ihre DeepLinkMatcher-Instanzen.
  2. Führen Sie alle Ihre DeepLinkMatcher-Instanzen zusammen, entweder explizit oder mit Multibindungen.
  3. Erstellen Sie ein DeepLinkRequest aus dem eingehenden Intent.
  4. Gleichen Sie die Anfrage mit allen Matchern ab und suchen Sie die beste Übereinstimmung.
  5. Erstellen Sie den Back-Stack aus dem Abgleichsergebnis.