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.
Configurar Firebase y el SDK de Dynamic Links
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.
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.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.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' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.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' }
- En Firebase console , abra la sección Dynamic Links . Acepte los términos de servicio si se le solicita que lo haga.
Agregue un filtro de intención para enlaces profundos
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.
Manejar enlaces profundos
Para recibir el enlace profundo, llama 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); } });
Debe llamar a
getDynamicLink()
en cada actividad que pueda iniciar el enlace, aunque el enlace pueda estar disponible desde la intención usandogetIntent().getData()
. LlamargetDynamicLink()
recupera el enlace y borra los datos para que su aplicación solo los procese una vez.Normalmente llamas a
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
Google. - Incluya el archivo de configuración
google-services.json
en su aplicación. - Llame a
FirebaseAnalytics.getInstance()
antes de llamar aFirebaseDynamicLinks.getDynamicLink()
.
Manejo de Dynamic Links usando App Links
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
autoVerify
de intención de verificación automática 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 archivoassetlinks.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 a
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 .
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2023-01-29 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Falta la información que necesito" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Muy complicado o demasiados pasos" },{ "type": "thumb-down", "id": "outOfDate", "label":"Desactualizado" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema de traducción" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Problema con las muestras o los códigos" },{ "type": "thumb-down", "id": "otherDown", "label":"Otro" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Fácil de comprender" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Resolvió mi problema" },{ "type": "thumb-up", "id": "otherUp", "label":"Otro" }]