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. Definiere Intent-Filter in deiner AndroidManifest.xml, um anzugeben, welche URIs deine 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 ein DeepLinkUri und optional ein RequestExtras mit zusätzlichen Informationen, z. B. der Intent-Aktion oder dem MIME-Typ.

DeepLinkRequest-Extras bereitstellen

Wenn Sie zusätzliche Informationen zum Deeplink speichern möchten, verwenden Sie die Klasse RequestExtras. Damit die Definition und Instanziierung von Extras typsicher ist, bietet die Bibliothek die Schnittstelle RequestExtrasKey und die DSL requestExtras.

Außerdem bietet die Bibliothek zwei zusätzliche Schlüssel und zugehörige Hilfsprogramme:

  • MimeTypeExtrasKey: Wird zum Speichern eines MIME-Typs String verwendet.
  • ActionExtrasKey (nur Android): Wird verwendet, um die Aktion String eines Intent zu speichern.

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

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 einen DeepLinkRequest direkt aus einem Intent erstellen. Bei dieser Konstruktion wird der DeepLinkRequest so erstellt:

  • Der uri wird aus dem Feld data des Intents kopiert.
  • Wenn der Wert nicht null ist, werden der MIME-Typ und die 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 werden, werden hinzugefügt.

Ein DeepLinkMatcher ordnet eingehende DeepLinkRequest-Instanzen Navigationstasten zu, die dem Back Stack Ihrer App hinzugefügt werden können. Navigation 3 bietet drei integrierte Matcher: UriDeepLinkMatcher für den mustergestützten URI-Abgleich, StaticKeyDeepLinkMatcher für einfache Links und BackStackMatcher für das 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 deine Aktivität starten kann, musst du die entsprechenden <intent-filter>-Elemente in der AndroidManifest.xml deiner App definieren. Weitere Informationen finden Sie unter Intent-Filter für eingehende Links hinzufügen.

Eingehende Anfrage abgleichen

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

Führen Sie die folgenden Schritte aus, um eine eingehende Anfrage abzugleichen:

  1. Instanziieren Sie Ihre DeepLinkMatcher-Instanzen.
  2. Fassen Sie alle DeepLinkMatcher-Instanzen zusammen, entweder explizit oder mithilfe von Multibindings.
  3. Erstellen Sie eine DeepLinkRequest aus der eingehenden Intent.
  4. Gleicht die Anfrage mit allen Abgleichern ab und findet die beste Übereinstimmung.
  5. Erstelle den Back Stack aus dem Spielergebnis.