Recibe Firebase Dynamic Links en Android

Para recibir los 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 a fin de obtener los datos que se pasaron en el vínculo dinámico.

Configura Firebase y el SDK de Dynamic Links

  • Agrega Firebase a tu proyecto de Android. Agrega la dependencia para Firebase Dynamic Links al archivo build.gradle de nivel de app:
    implementation 'com.google.firebase:firebase-dynamic-links:16.1.7'
  • Si aún no conectaste la app al proyecto de Firebase, puedes hacerlo desde Firebase console.
  • En Firebase console, 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 intent nuevo a la actividad que administra los vínculos directos en tu app. El filtro de intents debe capturar vínculos directos del dominio, ya que el Dynamic Link redireccionará a tu dominio si la app está instalada. Esto es obligatorio para que tu app reciba los datos del 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 inicia la actividad con este filtro de intents para administrar el vínculo.

Para recibir el vínculo directo, llama al método getDynamicLink():

Java
Android

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);
            }
        });

Kotlin
Android

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { 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) }

Debes llamar a getDynamicLink() en cada una de las actividades que el vínculo pueda iniciar, aunque el vínculo esté disponible en el intent mediante el uso de 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.

Generalmente, se llama a getDynamicLink() en la actividad principal y en las actividades iniciadas por los filtros de intent que coinciden con el vínculo.

Registra datos de análisis

Se puede hacer un seguimiento automático de los siguientes eventos en Google Analytics para Firebase y mostrarlos en Firebase console.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Para registrar estos eventos, debes configurar Google Analytics para Firebase 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. Por ejemplo: onStart(), onCreate().
    • Actividades de vínculos directos.
  • Configura y utiliza Google Analytics para Firebase:
    • Incluye la dependencia de Google Analytics para Firebase. El complemento Gradle de google-services suele agregarla automáticamente.
    • Incluye el archivo de configuración google-services.json en tu app.
    • Llama a FirebaseAnalytics.getInstance() antes de llamar a FirebaseDynamicLinks.getDynamicLink().

En Android 6.0 (nivel de API 23) y superior, puedes configurar que tu app maneje Dynamic Links directamente mediante los vínculos de apps para Android cuando ya esté instalada.

Asegúrate de haber agregado la huella digital del certificado SHA256 de tu app al proyecto en Firebase console. Dynamic Links se encargará de configurar la asociación del sitio web de los vínculos de apps para tu dominio de Dynamic Links.

Para agregar un filtro de intents de verificación automática a la actividad que manejará el Dynamic Link, configura el host para el dominio de Dynamic Links de tu proyecto tal como se encuentra en Firebase console. En 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.page.link" android:scheme="http"/>
    <data android:host="example.page.link" android:scheme="https"/>
</intent-filter>

Recuerda que debes configurar android:host en tu dominio de 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 el dominio de Dynamic Links automáticamente. Si deseas revisarlo, abre el archivo assetlinks.json alojado en tu dominio:

https://YOUR_SUBDOMAIN.page.link/.well-known/assetlinks.json
Se deben incluir todos los nombres de los paquetes de las apps de Firebase.

Ahora se enviarán los Dynamic Links directamente a tu app. Podrás obtener el vínculo directo y otros datos de Dynamic Links si llamas 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).

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.