Para recibir el Firebase Dynamic Links que
creaste, debes incluir el SDK de Dynamic Links en tu app y llamar al método FirebaseDynamicLinks.getDynamicLink()
cuando la app se cargue para obtener los datos que se pasaron en el Dynamic Link.
Configura Firebase y el SDK de Dynamic Links
Si aún no lo has hecho, agrega Firebase a tu proyecto de Android.
Cuando registres tu app, especifica la clave de firma SHA-1. Si usas App Links, también debes especificar la clave SHA‑256.
-
En el archivo Gradle del módulo (nivel de la app) (generalmente
<project>/<app-module>/build.gradle.kts
o<project>/<app-module>/build.gradle
), agrega la dependencia de la biblioteca de Dynamic Links para Android. Te recomendamos usar la Firebase Android BoM para controlar las versiones de las bibliotecas.Para obtener una experiencia óptima con Dynamic Links, te recomendamos habilitar la Google Analytics en tu proyecto de Firebase y agregar el SDK de Firebase para Google Analytics a tu app.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.7.0")) // Add the dependencies for the Dynamic Links and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links' implementation 'com.google.firebase:firebase-analytics' }
Cuando usas la Firebase Android BoM, tu app siempre usará versiones compatibles de las bibliotecas de Firebase para Android.
(Alternativa) Agrega dependencias de la biblioteca de Firebase sin usar la BoM
Si eliges no usar la Firebase BoM, debes especificar cada versión de la biblioteca de Firebase en su línea de dependencia.
Ten en cuenta que, si usas múltiples bibliotecas de Firebase en tu app, es muy recomendable que uses la BoM para administrar las versiones de las bibliotecas para garantizar que todas las versiones sean compatibles.
dependencies { // Add the dependencies for the Dynamic Links and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links:22.1.0' implementation 'com.google.firebase:firebase-analytics:22.1.2' }
- En la consola de Firebase, abre la sección Dynamic Links. . Si se te solicita, acepta las Condiciones del Servicio.
Agrega un filtro de intents para vínculos directos
Al igual que sucede con los vínculos directos sin formato, debes agregar un filtro de intents nuevo a la actividad que controla los vínculos directos de tu app. El filtro de intents debe detectar los vínculos directos del dominio, ya que Dynamic Link redireccionará a tu dominio si la app está instalada. Esto es obligatorio para que tu app reciba los datos de Dynamic Link después de instalarla o actualizarla desde Play Store y de hacer clic en el botón Continuar. En AndroidManifest.xml
:
<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:host="example.com" android:scheme="https"/> </intent-filter>
Cuando los usuarios abren un Dynamic Link con un vínculo directo al esquema y al host que especificaste, tu app iniciará la actividad con este filtro de intents para controlar el vínculo.
Administra vínculos directos
Para recibir el vínculo directo, llama al método getDynamicLink()
:
Kotlin
Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? -> // Get deep link from result (may be null if no link is found) var deepLink: Uri? = null if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.link } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... } .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }
Java
FirebaseDynamicLinks.getInstance() .getDynamicLink(getIntent()) .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() { @Override public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) { // Get deep link from result (may be null if no link is found) Uri deepLink = null; if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.getLink(); } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... // ... } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "getDynamicLink:onFailure", e); } });
Debes llamar a getDynamicLink()
en cada una de las actividades que pueda iniciar
el vínculo, aunque esté disponible en el intent a través del
método getIntent().getData()
. La llamada a getDynamicLink()
permite obtener el vínculo y borrar los datos, de modo que la app solo los procese una vez.
En general, se llama a getDynamicLink()
en la actividad principal y en las actividades iniciadas por los filtros de intents que coinciden con el vínculo.
Registra estadísticas
Los siguientes eventos se pueden seguir automáticamente en Google Analytics y mostrarse en la consola de Firebase.
dynamic_link_app_open
dynamic_link_first_open
dynamic_link_app_update
Para registrar estos eventos, debes configurar Google Analytics antes de recuperar el vínculo directo. Comprueba que se cumplan las siguientes condiciones:
- Llama a
FirebaseDynamicLinks.getDynamicLink()
en los puntos de entrada de tu app: - Actividades de Launcher, p. ej.:
action="android.intent.action.MAIN"
,category="android.intent.category.LAUNCHER"
. - Puntos de entrada de la actividad, p. ej.:
onStart()
,onCreate()
. - Actividades de vínculos directos.
- Configura y usa Google Analytics:
- Incluye la dependencia Google Analytics. El complemento de
google-services
para Gradle suele agregarla automáticamente. - Incluye
el archivo de configuración
google-services.json
en tu app. - Llama a
FirebaseAnalytics.getInstance()
antes de llamar aFirebaseDynamicLinks.getDynamicLink()
.
Controla Dynamic Links con App Links
En Android 6.0 (nivel de API 23) y versiones superiores, puedes configurar tu app para que maneje Dynamic Links directamente mediante Android App Links cuando ya esté instalada.
Asegúrate de haber agregado la huella digital del certificado SHA256 de tu app al proyecto en la consola de Firebase. Dynamic Links se encargará de configurar la asociación del sitio web de los vínculos de apps para tu dominio de Dynamic Links.
Agrega un filtro de intents de verificación automática a la actividad que controlará el Dynamic Link y establece el host en el dominio Dynamic Links de tu proyecto como que se encuentra en la consola de Firebase. En el AndroidManifest.xml
:
<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:host="example.com/link" android:scheme="http"/> <data android:host="example.com/link" android:scheme="https"/> </intent-filter>
Ten en cuenta que debes configurar android:host
en tu dominio Dynamic Links, en vez del dominio de tu vínculo directo.
Debes registrar todos los filtros de intents autoVerify
en tu manifiesto para que los vínculos de app
interactúen con ellos. Firebase realiza este proceso para tus dominios de Dynamic Links automáticamente. Si deseas revisarlo,
abre el archivo assetlinks.json
alojado en tu dominio de Dynamic Links:
https://YOUR_DOMAIN/.well-known/assetlinks.json
Ahora se enviarán los Dynamic Links directamente a tu app. Podrás obtener el vínculo directo y otros datos del Dynamic Link llamando a getDynamicLink()
en la actividad a la que agregaste el filtro de intents de los vínculos de apps (como se describe en Administra vínculos directos).
Nota: Dado que invocar mediante vínculos de apps lleva al usuario directamente a la app, un Dynamic Link no puede respetar la versión mínima requerida. Por lo tanto, cuando se abra la app, deberás comparar la versión mínima del Dynamic Link ( getminimumappversion) con el PackageInfo.versionCode y redireccionar al usuario para que actualice la app con getUpdateAppIntent si es necesario.