Reciba enlaces dinámicos de Firebase en Android

Para recibir los Firebase Dynamic Links que creó , debe incluir el SDK de Dynamic Links en su aplicación y llamar al método FirebaseDynamicLinks.getDynamicLink() cuando su aplicación se carga para obtener los datos pasados ​​en el Dynamic Link.

  1. Si aún no lo has hecho, agrega Firebase a tu proyecto de Android .

    Cuando registre su aplicación, especifique su clave de firma SHA-1. Si utiliza App Links, especifique también su clave SHA-256.

  2. En el archivo Gradle de su módulo (nivel de aplicación) (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle ), agregue la dependencia para Dynamic Links biblioteca para Android. Recomendamos utilizar Firebase Android BoM para controlar el control de versiones de la biblioteca.

    Para una experiencia óptima con Dynamic Links, recomendamos habilitar Google Analytics en su proyecto de Firebase y agregar el SDK de Firebase para Google Analytics a su aplicación.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.8.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'
    }
    

    Al usar Firebase Android BoM , su aplicación siempre usará versiones compatibles de las bibliotecas de Firebase Android.

    (Alternativa) Agregue dependencias de la biblioteca de Firebase sin usar la BoM

    Si elige no utilizar la BoM de Firebase, debe especificar cada versión de la biblioteca de Firebase en su línea de dependencia.

    Tenga en cuenta que si usa varias bibliotecas de Firebase en su aplicación, le recomendamos encarecidamente usar la BoM para administrar las versiones de la biblioteca, lo que garantiza 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:21.2.0'
        implementation 'com.google.firebase:firebase-analytics:21.6.1'
    }
    
    ¿Busca un módulo de biblioteca específico de Kotlin? A partir de octubre de 2023 (Firebase BoM 32.5.0) , tanto los desarrolladores de Kotlin como los de Java podrán depender del módulo de biblioteca principal (para más detalles, consulte las preguntas frecuentes sobre esta iniciativa ).
  3. En Firebase console , abre la sección Enlaces dinámicos . Acepte los términos de servicio si se le solicita que lo haga.

Al igual que con los enlaces profundos simples , debes agregar un nuevo filtro de intención a la actividad que maneja los enlaces profundos para tu aplicación. El filtro de intención debe detectar enlaces profundos de su dominio, ya que el enlace dinámico redirigirá a su dominio si su aplicación está instalada. Esto es necesario para que su aplicación reciba los datos de Dynamic Link después de instalarla/actualizarla desde Play Store y tocar 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 vínculo dinámico con un vínculo profundo al esquema y al host que usted especifica, su aplicación iniciará la actividad con este filtro de intención para manejar el vínculo.

Para recibir el enlace profundo, llame al método getDynamicLink() :

Kotlin+KTX

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 actividad que pueda iniciarse mediante el enlace, aunque el enlace pueda estar disponible desde la intención usando getIntent().getData() . Al llamar getDynamicLink() se recupera el enlace y se borran esos datos para que su aplicación solo los procese una vez.

Normalmente llamas getDynamicLink() en la actividad principal, así como en cualquier actividad iniciada por filtros de intención que coincidan con el enlace.

Análisis de registros

Los siguientes eventos se pueden rastrear automáticamente en Google Analytics y mostrarse en Firebase console.

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Para registrar estos eventos, debe configurar Google Analytics antes de recuperar el enlace profundo. Compruebe que se cumplan las siguientes condiciones:

  • Llame a FirebaseDynamicLinks.getDynamicLink() en los puntos de entrada de su aplicación:
    • Actividades del lanzador. por ejemplo: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Puntos de entrada a la actividad. por ejemplo: onStart() , onCreate() .
    • Actividades de enlaces profundos.
  • Configurar y utilizar Google Analytics:
    • Incluya la dependencia de Google Analytics. Por lo general, esto lo agrega automáticamente el complemento Gradle google-services .
    • Incluya el archivo de configuración google-services.json en su aplicación.
    • Llame FirebaseAnalytics.getInstance() antes de llamar FirebaseDynamicLinks.getDynamicLink() .

En Android 6.0 (nivel de API 23) y versiones posteriores, puede configurar su aplicación para manejar Dynamic Links directamente cuando su aplicación ya esté instalada mediante Android App Links .

Asegúrese de haber agregado la huella digital del certificado SHA256 para su aplicación en su proyecto en Firebase console . Dynamic Links se encargará de configurar la asociación del sitio web de App Links para su dominio de Dynamic Links.

Agregue un filtro de intención verificado automáticamente a la Actividad que manejará el Enlace dinámico, configurando el host en el dominio de Enlaces dinámicos de su 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.com/link" android:scheme="http"/>
    <data android:host="example.com/link" android:scheme="https"/>
</intent-filter>

Tenga en cuenta que android:host debe configurarse en su dominio de Dynamic Links y no en el dominio de su enlace profundo.

Todos los filtros de intención autoVerify en su manifiesto deben estar registrados para que los enlaces de aplicaciones funcionen. Firebase maneja esto automáticamente para sus dominios de Dynamic Links, pero puede verificarlo abriendo el archivo assetlinks.json alojado en su dominio de Dynamic Links:

https://YOUR_DOMAIN/.well-known/assetlinks.json
Se deben incluir todos los nombres de paquetes de sus aplicaciones de Firebase.

Los enlaces dinámicos ahora se enviarán directamente a su aplicación. Podrá obtener el vínculo profundo y otros datos del vínculo dinámico llamando getDynamicLink() en la actividad a la que agregó el filtro de intención de vínculos de aplicación (como se describe en Manejar vínculos profundos ).

Nota: Dado que la invocación a través de App Links lleva al usuario directamente a la aplicación, un Dynamic Link no puede respetar la versión mínima requerida. Entonces, una vez que se abre la aplicación, debe comparar la versión mínima del vínculo dinámico ( getminimumappversion ) con PackageInfo.versionCode y redirigir al usuario para que actualice la aplicación si es necesario mediante getUpdateAppIntent .