Поддержка глубоких ссылок

Начиная с версии 1.2.0 , Navigation 3 поддерживает создание прямых ссылок на элементы вашего приложения с помощью классов DeepLinkRequest и DeepLinkMatcher .

Для поддержки прямых ссылок в вашем приложении выполните следующие шаги:

  1. Определите фильтры намерений в файле AndroidManifest.xml , чтобы указать, какие URI может обрабатывать ваше приложение.
  2. Создайте экземпляры DeepLinkMatcher , чтобы сопоставлять входящие запросы с клавишами навигации.
  3. Сопоставляйте входящие запросы в методах onCreate или onNewIntent вашего Activity и соответствующим образом обновляйте стек возврата.

Создайте DeepLinkRequest

Объект DeepLinkRequest представляет собой входящую глубокую ссылку. Он содержит объект DeepLinkUri и необязательный RequestExtras с дополнительной информацией, такой как действие намерения или MIME-тип.

Предоставьте дополнительные возможности DeepLinkRequest

Для хранения дополнительной информации, связанной с прямой ссылкой, используйте класс RequestExtras . Для обеспечения типобезопасности при определении и создании экземпляров дополнительных элементов библиотека предоставляет интерфейс RequestExtrasKey и DSL requestExtras .

Кроме того, библиотека предоставляет два дополнительных ключа и соответствующие вспомогательные функции:

  • MimeTypeExtrasKey : Используется для хранения MIME-типа String .
  • ActionExtrasKey (только для Android): используется для хранения String действия Intent .

Чтобы определить собственные дополнительные параметры, реализуйте интерфейс RequestExtrasKey с типизированным обобщенным типом:

Также можно использовать emptyRequestExtras() для создания пустого экземпляра или комбинировать дополнительные данные с помощью операторов + ( plus ) и - ( minus ).

Создайте DeepLinkRequest из Intent

На Android можно создать DeepLinkRequest непосредственно из Intent . При таком способе создания DeepLinkRequest формируется следующим образом:

  • uri копируется из поля data интента.
  • Если значение не равно null, тип MIME и дополнительные параметры действия задаются из соответствующих полей намерения.
  • Все значения intent.extras , не равные null, сохраняются как SavedState в DeepLinkRequest.IntentExtrasKey .
  • Все дополнительные опции, указанные с помощью параметра extras , добавляются.

Объект DeepLinkMatcher сопоставляет входящие экземпляры DeepLinkRequest с навигационными клавишами, которые можно добавить в стек возврата вашего приложения. Navigation 3 предоставляет три встроенных сопоставителя: UriDeepLinkMatcher для сопоставления URI по шаблонам, StaticKeyDeepLinkMatcher для простых ссылок и BackStackMatcher для создания синтетических стеков возврата. Библиотека также поддерживает пользовательские сопоставители для случаев использования, не охваченных встроенными сопоставителями.

Для получения дополнительной информации см. раздел «Создание DeepLinkMatchers» .

Добавить фильтры намерений

Чтобы разрешить запуск активности по прямой ссылке, необходимо определить соответствующие элементы <intent-filter> в файле AndroidManifest.xml вашего приложения. Дополнительную информацию см. в разделе «Добавление фильтров намерений для входящих ссылок» .

Сопоставить входящий запрос

После создания экземпляров DeepLinkMatcher вы можете сопоставлять входящие запросы в своей активности.

Для сопоставления входящего запроса выполните следующие шаги:

  1. Создайте экземпляры DeepLinkMatcher .
  2. Объедините все экземпляры DeepLinkMatcher , либо явно, либо с помощью множественных привязок .
  3. Создайте DeepLinkRequest на основе входящего Intent .
  4. Сравните запрос со всеми сопоставителями и найдите наилучшее совпадение.
  5. Создайте стек возврата из результата совпадения.