Crea instancias de DeepLinkMatcher

Para asignar instancias DeepLinkRequest entrantes a claves que se pueden agregar a la pila de actividades de tu app, define instancias DeepLinkMatcher.

DeepLinkMatcher es una clase abstracta que incluye dos métodos: match y matchRequest. Las subclases deben implementar matchRequest, que toma un DeepLinkRequest y muestra un DeepLinkMatcher.MatchResult si la solicitud coincide o null en caso 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 muestra cuando coincide el vínculo directo.
  • R : DeepLinkMatcher.MatchResult<T>: Es el subtipo MatchResult específico que muestran matchRequest y match.

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

Cómo aplicar un filtro previo a las solicitudes

Las implementaciones de DeepLinkMatcher pueden especificar una lista de DeepLinkMatcher.Filter instancias 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 en comparación con editar:

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

Cómo usar comparadores proporcionados

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

Para los vínculos directos básicos que no tienen argumentos para extraer, usa StaticKeyDeepLinkMatcher para hacer coincidir las solicitudes que cumplen con todos los filtros proporcionados.

Por ejemplo, para controlar intents para ACTION_APPLICATION_PREFERENCES:

Para hacer coincidir URIs jerárquicos con patrones y extraer argumentos, usa UriDeepLinkMatcher. Por ejemplo, puedes hacer coincidir www.example.com/users/{id} para extraer el id argumento 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 instancias de BackStackMatcher directamente, llama a la withBackStack función de extensión en otro DeepLinkMatcher. withBackStack une el receptor en un BackStackMatcher que muestra 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.