Cuando implementes la función de vínculos de apps, debes probar la funcionalidad de vinculación para asegurarte de que el sistema pueda asociar tu app con tus sitios web y manejar las solicitudes de URL, tal como lo esperas.
Para probar un archivo de instrucciones existente, puedes usar la herramienta Generador y comprobador de listas de instrucciones.
En las siguientes secciones, se describe cómo probar manualmente la verificación de los vínculos de la app. Si lo prefieres, puedes probar la verificación desde la herramienta Play Deep Links o el Asistente de App Links de Android Studio.
Cómo confirmar la lista de hosts que se deben verificar
Cuando realices la prueba, debes confirmar la lista de hosts asociados que el sistema debe verificar para tu app. Haz una lista de todas las URLs cuyos filtros de intents correspondientes incluyen los siguientes atributos y elementos:
- Atributo
android:scheme
con un valor dehttp
ohttps
- Atributo
android:host
con un patrón de URL de dominio - Elemento de acción
android.intent.action.VIEW
- Elemento de categoría
android.intent.category.BROWSABLE
Usa esta lista para comprobar que se proporcione un archivo JSON de Vínculos de recursos digitales en cada host y subdominio nombrado.
Cómo confirmar los archivos de Vínculos de recursos digitales
En cada sitio web, usa la API de Digital Asset Links para confirmar que el archivo JSON de Digital Asset Links se encuentre alojado y definido correctamente:
https://digitalassetlinks.googleapis.com/v1/statements:list?
source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&
relation=delegate_permission/common.handle_all_urls
En el caso de los vínculos dinámicos a la aplicación, también puedes consultar las extensiones de relación.
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls&return_relation_extensions=true
Comprueba las políticas de vínculos
Como parte de tu proceso de prueba, puedes comprobar la configuración actual del sistema para el control de vínculos. Usa el siguiente comando para obtener una lista de las políticas de control de vínculos existentes para todas las apps de tu dispositivo conectado:
adb shell dumpsys package domain-preferred-apps
El siguiente comando hace lo mismo:
adb shell dumpsys package d
El comando muestra un listado de cada usuario o perfil definidos en el dispositivo, precedido por un encabezado en el siguiente formato:
App linkages for user 0:
Luego de este encabezado, el resultado usa el siguiente formato para enumerar la configuración de control de vínculos para ese usuario:
Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002
Este listado indica qué apps están asociadas con qué dominios para ese usuario:
Package
: Identifica una app por el nombre de su paquete, como se encuentra declarado en su manifiesto.Domains
: Muestra la lista completa de hosts cuyos vínculos web maneja esta app; utiliza espacios en blanco como delimitadores.Status
: Muestra la configuración actual de control de vínculos para esta app. Una app que aprobó la verificación y cuyo manifiesto contieneandroid:autoVerify="true"
muestra un estado dealways
. El número hexadecimal que le sigue a ese estado está relacionado con el registro de las preferencias de usuario para la vinculación de apps del sistema Android. Este valor no indica si la verificación tuvo éxito.
Ejemplo de comprobación
Para que la verificación de vínculos de apps tenga éxito, el sistema debe poder verificar tu app con cada uno de los sitios web que especifiques en un filtro de intents determinado que cumpla con los criterios para los vínculos de apps. En el siguiente ejemplo, se muestra la configuración de un manifiesto con varios vínculos de apps definidos:
<activity android:name=”MainActivity”>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:host="mobile.example.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="www.example2.com" />
</intent-filter>
</activity>
<activity android:name=”SecondActivity”>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:host="account.example.com" />
</intent-filter>
</activity>
<activity android:name=”ThirdActivity”>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="https" />
<data android:host="map.example.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="market" />
<data android:host="example.com" />
</intent-filter>
</activity>
</application>
La siguiente es la lista de hosts que la plataforma intentaría verificar a partir del manifiesto anterior:
www.example.com
mobile.example.com
www.example2.com
account.example.com
La siguiente es la lista de hosts que la plataforma no intentaría verificar a partir del manifiesto anterior:
map.example.com (it does not have android.intent.category.BROWSABLE)
market://example.com (it does not have either an "http" or "https" scheme)
Para obtener más información sobre las listas de instrucciones, consulta Cómo crear una lista de instrucciones.