Obsługa precyzyjnych linków

Od wersji 1.2.0 biblioteka Navigation 3 obsługuje precyzyjne linki do miejsc docelowych w aplikacji za pomocą klas DeepLinkRequest i DeepLinkMatcher.

Aby obsługiwać precyzyjne linki w aplikacji, wykonaj te czynności:

  1. Zdefiniuj filtry intencji w pliku AndroidManifest.xml, aby określić, które identyfikatory URI może obsługiwać Twoja aplikacja.
  2. Utwórz instancje DeepLinkMatcher , aby mapować przychodzące żądania na klucze nawigacji.
  3. Dopasuj przychodzące żądania w metodzie onCreate lub onNewIntent aktywności i odpowiednio zaktualizuj stos wsteczny.

Tworzenie DeepLinkRequest

DeepLinkRequest reprezentuje przychodzący precyzyjny link. Zawiera DeepLinkUri i opcjonalne RequestExtras z dodatkowymi informacjami, takimi jak działanie intencji lub typ MIME.

Podawanie dodatkowych informacji DeepLinkRequest

Aby przechowywać dodatkowe informacje związane z precyzyjnym linkiem, użyj klasy RequestExtras. Aby zdefiniować i utworzyć instancję dodatkowych informacji w sposób bezpieczny dla typu, biblioteka udostępnia interfejs RequestExtrasKey i requestExtras DSL.

Biblioteka udostępnia też 2 klucze dodatkowych informacji i powiązane z nimi pomocnicze funkcje:

Aby zdefiniować własne dodatkowe informacje, zaimplementuj RequestExtrasKey interfejs z typem ogólnym:

Możesz też użyć emptyRequestExtras(), aby utworzyć pustą instancję, lub połączyć dodatkowe informacje za pomocą operatorów + (plus) i - (minus).

Tworzenie DeepLinkRequest z Intent

W Androidzie możesz utworzyć DeepLinkRequest bezpośrednio z Intent. W takim przypadku DeepLinkRequest jest tworzony w ten sposób:

  • uri jest kopiowany z pola data intencji.
  • Jeśli nie jest to wartość null, typ MIME i dodatkowe informacje o działaniu extras są ustawiane na podstawie odpowiednich pól intencji.
  • Wszystkie intent.extras z wartościami innymi niż null są zapisywane jako SavedState w DeepLinkRequest.IntentExtrasKey.
  • Dodawane są wszystkie dodatkowe informacje podane za pomocą parametru extras.

A DeepLinkMatcher mapuje przychodzące instancje DeepLinkRequest na klucze nawigacji, które można dodać do stosu wstecznego aplikacji. Biblioteka Navigation 3 udostępnia 3 wbudowane dopasowywacze: UriDeepLinkMatcher do dopasowywania identyfikatorów URI na podstawie wzorca, StaticKeyDeepLinkMatcher do podstawowych linków i BackStackMatcher do tworzenia syntetycznych stosów wstecznych. Biblioteka obsługuje też niestandardowe dopasowywacze do przypadków użycia, które nie są objęte wbudowanymi dopasowywaczami.

Więcej informacji znajdziesz w artykule Tworzenie DeepLinkMatchers.

Dodawanie filtrów intencji

Aby precyzyjny link mógł uruchomić Twoją aktywność, musisz zdefiniować pasujące <intent-filter> elementy w pliku AndroidManifest.xml aplikacji. Więcej informacji znajdziesz w artykule Dodawanie filtrów intencji dla linków przychodzących.

Dopasowywanie żądania przychodzącego

Po utworzeniu instancji DeepLinkMatcher możesz dopasować żądania przychodzące w swojej aktywności.

Aby dopasować żądanie przychodzące, wykonaj te czynności:

  1. Utwórz instancje DeepLinkMatcher.
  2. Zbierz wszystkie instancje DeepLinkMatcher – bezpośrednio lub za pomocą multibindings.
  3. Utwórz DeepLinkRequest z przychodzącego Intent.
  4. Dopasuj żądanie do wszystkich dopasowywaczy i znajdź najlepsze dopasowanie.
  5. Utwórz stos wsteczny na podstawie wyniku dopasowania.