Crea instancias de DeepLinkMatcher

Para asignar instancias entrantes de DeepLinkRequest a claves que se puedan agregar a la pila de actividades de tu app, debes definir instancias de DeepLinkMatcher.

DeepLinkMatcher es una clase abstracta que incluye dos métodos, match y matchRequest. Las subclases deben implementar matchRequest, que toma un DeepLinkRequest y devuelve un DeepLinkMatcher.MatchResult si la solicitud coincide, o null de lo contrario.

Debido a que varios comparadores pueden coincidir con una sola solicitud, MatchResult implementa Comparable para clasificar los resultados y seleccionar la mejor coincidencia.

Parámetros de tipo

La clase DeepLinkMatcher declara dos parámetros de tipo genérico: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • T : Any: Es el tipo de clave de navegación de destino (como UserProfileKey o NavKey) que se devuelve cuando coincide el vínculo directo.
  • R : DeepLinkMatcher.MatchResult<T>: Es el subtipo específico de MatchResult que devuelven matchRequest y match.

El segundo parámetro de tipo, R, conserva la información de coincidencia especializada sin requerir una conversión de tipo de datos no verificada:

Solicitudes de filtrado previo

Las implementaciones de DeepLinkMatcher pueden especificar una lista de instancias de DeepLinkMatcher.Filter para filtrar las solicitudes antes de evaluarlas.

La biblioteca incluye funciones auxiliares para crear filtros comunes:

Este enfoque te permite reutilizar el mismo patrón de URI para diferentes acciones, como ver o editar:

Como Filter es una interfaz funcional (SAM), también puedes crear filtros con expresiones lambda:

Usa los comparadores proporcionados

La biblioteca incluye tres implementaciones estándar de DeepLinkMatcher: StaticKeyDeepLinkMatcher, UriDeepLinkMatcher y BackStackMatcher. Si estos comparadores no cumplen con los requisitos de tu app, puedes crear comparadores de vínculos directos personalizados.

En el caso de los vínculos directos básicos que no tienen argumentos para extraer, usa StaticKeyDeepLinkMatcher para que coincidan con las solicitudes que cumplen con todos los filtros proporcionados.

Por ejemplo, para controlar intents de ACTION_APPLICATION_PREFERENCES, haz lo siguiente:

Para hacer coincidir los URI jerárquicos con patrones y extraer argumentos, usa UriDeepLinkMatcher. Por ejemplo, puedes hacer coincidir www.example.com/users/{id} para extraer el argumento id en una clave de destino. Para obtener más información, consulta Cómo hacer coincidir vínculos directos de URI.

Cómo compilar una pila de actividades sintética

Para definir cómo compilar una pila de actividades sintética a partir de una coincidencia exitosa, usa BackStackMatcher. En lugar de crear una instancia de BackStackMatcher directamente, llama a la función de extensión withBackStack en otro DeepLinkMatcher. withBackStack une el receptor en un BackStackMatcher que devuelve un BackStackMatchResult que contiene una pila de actividades sintética List. Debido a que BackStackMatchResult delega la comparación al resultado de coincidencia subyacente, unir un comparador en withBackStack conserva su clasificación de coincidencia original.

Para controlar la pila de actividades resultante en tu actividad, consulta Cómo hacer coincidir una solicitud entrante.