Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Recibe Firebase Dynamic Links en Android

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Para recibir los vínculos dinámicos de Firebase que creó , debe incluir el SDK de vínculos dinámicos en su aplicación y llamar al método FirebaseDynamicLinks.getDynamicLink() cuando su aplicación se carga para que los datos pasen en el vínculo dinámico.

  1. Si aún no lo ha hecho, agregue Firebase a su proyecto de Android .

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

  2. En el archivo Gradle de tu módulo (a nivel de aplicación) (generalmente <project>/<app-module>/build.gradle ), agrega la dependencia para la biblioteca de Android de Dynamic Links. Recomendamos usar 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.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.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) Agregar dependencias de la biblioteca de Firebase sin usar el BoM

    Si elige no usar Firebase BoM, 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 enfáticamente que use la lista de materiales 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.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

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

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

    (Alternativa) Agregar dependencias de la biblioteca de Firebase sin usar el BoM

    Si elige no usar Firebase BoM, 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 enfáticamente que use la lista de materiales 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-ktx:21.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    
  3. En Firebase console , abra la sección Dynamic Links . Acepte los términos de servicio si se le solicita que lo haga.

Al igual que con los enlaces profundos simples , debe agregar un nuevo filtro de intención a la actividad que maneja los enlaces profundos para su aplicación. El filtro de intención debe capturar enlaces profundos de su dominio, ya que Dynamic Link 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 que se instale/actualice desde Play Store y toque 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 especifique, su aplicación iniciará la actividad con este filtro de intenciones para manejar el vínculo.

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

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

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

Debe llamar a getDynamicLink() en cada actividad que pueda iniciar el enlace, aunque el enlace pueda estar disponible desde la intención usando getIntent().getData() . Llamar getDynamicLink() recupera el enlace y borra los datos para que su aplicación solo los procese una vez.

Normalmente llamas getDynamicLink() en la actividad principal, así como en cualquier actividad lanzada por filtros de intenciones que coincidan con el enlace.

Registro de análisis

Los siguientes eventos pueden rastrearse 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, debe configurar Google Analytics antes de recuperar el enlace profundo. Compruebe que se cumplen 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 de la actividad. por ejemplo: onStart() , onCreate() .
    • Actividades de enlace profundo.
  • Configurar y utilizar Google Analytics:
    • Incluya la dependencia de Google Analytics. Esto generalmente se agrega automáticamente mediante 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 superior, puede configurar su aplicación para manejar Dynamic Links directamente cuando su aplicación ya está instalada usando 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 vínculo dinámico, configurando el host en el dominio de vínculos dinámicos de su proyecto como 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>

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 la aplicación participen. Firebase maneja esto automáticamente para sus dominios de Dynamic Links, pero puede verificar esto 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 enlace profundo y otros datos de Dynamic Link llamando getDynamicLink() en la actividad a la que agregó el filtro de intents de App Links (como se describe en Manejar enlaces 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 cumplir con la versión mínima requerida. Entonces, una vez que se abre la aplicación, debe comparar la versión mínima de Dynamic Link ( getminimumappversion ) con PackageInfo.versionCode y redirigir al usuario para que actualice la aplicación si es necesario mediante getUpdateAppIntent .