Descubre las novedades de Firebase en Google I/O 2022. Más información

Reciba Firebase Dynamic Links en una aplicación Flutter

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. Instale e inicialice los SDK de Firebase para Flutter si aún no lo ha hecho.

  2. Desde el directorio raíz de su proyecto Flutter, ejecute el siguiente comando para instalar el complemento Dynamic Links:

    flutter pub add firebase_dynamic_links
    
  3. Si está creando una aplicación para Android, abra la página de configuración del proyecto de la consola de Firebase y asegúrese de haber especificado su clave de firma SHA-1. Si usa App Links, especifique también su clave SHA-256.

Integración de plataforma

Complete los siguientes pasos de integración de plataforma para las plataformas para las que está creando su aplicación.

Androide

En Android, debe agregar un nuevo filtro de intención para 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.

plataformas de manzana

  1. Cree una cuenta de desarrollador de Apple si aún no tiene una.

  2. En la página de configuración del proyecto de Firebase console, asegúrese de que su aplicación de iOS esté configurada correctamente con su ID de tienda de aplicaciones y su ID de equipo.

  3. En el sitio de desarrolladores de Apple, cree un perfil de aprovisionamiento para su aplicación con la función de dominio asociado habilitada.

  4. En Xcode, haga lo siguiente:

    1. Abra su aplicación bajo el encabezado OBJETIVOS .

    2. En la página Firma y capacidades, asegúrese de que su equipo esté registrado y que su perfil de aprovisionamiento esté configurado.

    3. En la página Firma y capacidades, habilite Dominios asociados y agregue lo siguiente a la lista de Dominios asociados:

      applinks:example.page.link
      
    4. En la página Información, agregue un Tipo de URL a su proyecto. Establezca el campo Esquemas de URL en el ID del paquete de su aplicación. (El identificador puede ser Bundle ID de paquete o lo que desee).

    5. Si configuró un dominio personalizado para su proyecto de Firebase, agregue el prefijo de URL de vínculo dinámico en el archivo Info.plist de su proyecto de iOS con la clave FirebaseDynamicLinksCustomDomains .

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
      <key>FirebaseDynamicLinksCustomDomains</key>
      <array>
          <string>https://custom.domain.io/path1</string>
          <string>https://custom.domain.io/path2</string>
      </array>
      
      ...other settings
      
      </dict>
      </plist>
      
    6. Opcional: deshabilite el uso del área de trabajo de iOS por parte del SDK de Dynamic Links.

      De forma predeterminada, el SDK de Dynamic Links usa el área de trabajo para mejorar la confiabilidad de los enlaces profundos posteriores a la instalación. Mediante el uso de la mesa de trabajo, Dynamic Links puede asegurarse de que cuando un usuario abre un Dynamic Link pero necesita instalar su aplicación primero, el usuario puede ir inmediatamente al contenido vinculado original al abrir la aplicación por primera vez después de la instalación.

      La desventaja de esto es que el uso de la mesa de trabajo activa una notificación en iOS 14 y versiones posteriores. Por lo tanto, la primera vez que los usuarios abren su aplicación, si el área de trabajo contiene una URL de enlace dinámico, verán una notificación de que su aplicación accedió al área de trabajo, lo que puede generar confusión.

      Para deshabilitar este comportamiento, edite el archivo Info.plist de su proyecto Xcode y establezca la clave FirebaseDeepLinkPasteboardRetrievalEnabled en NO .

Para manejar un vínculo dinámico en su aplicación, se deben implementar dos escenarios.

Estado Terminado

Si la aplicación finaliza, el método FirebaseDynamicLinks.getInitialLink le permite recuperar el Dynamic Link que abrió la aplicación.

Esta es una solicitud asincrónica, por lo que tiene sentido manejar un enlace antes de representar la lógica de la aplicación, como un navegador. Por ejemplo, podría manejar esto en la función main :

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);

  // Get any initial links
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  runApp(MyApp(initialLink));
}

Dentro de la lógica de su aplicación, puede verificar si se manejó un enlace y realizar una acción, por ejemplo:

if (initialLink != null) {
  final Uri deepLink = initialLink.link;
  // Example of using the dynamic link to push the user to a different screen
  Navigator.pushNamed(context, deepLink.path);
}

Alternativamente, si desea identificar si se usó un enlace dinámico exacto para abrir la aplicación, páselo al método getDynamicLink en su lugar:

String link = 'https://dynamic-link-domain/ke2Qa';

final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));

Estado de fondo/primer plano

Mientras la aplicación está abierta o en segundo plano, puede escuchar los eventos de Dynamic Links mediante un controlador de transmisión. El captador FirebaseDynamicLinks.onLink devuelve un Stream que contiene un PendingDynamicLinkData :

FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
  // Handle errors
});