Cómo crear vínculos de Dynamic Links con C++

Puedes crear Dynamic Links cortos o largos con la API de Firebase Dynamic Links. La API usa varias estructuras de parámetros opcionales para generar los vínculos. Los vínculos cortos también se pueden crear a partir de un vínculo largo generado previamente. Firebase Dynamic Links genera una URL como la siguiente:

https://abc123.app.goo.gl/WXYZ

El SDK de C++ funciona con Android y con iOS; requiere configuración adicional en ambas plataformas.

Antes de comenzar

Android

  1. Si aún no conectas tu app al proyecto de Firebase, puedes hacerlo desde Firebase console.
  2. Agrega Firebase a tu proyecto de Android.
  3. Agrega la dependencia para Firebase Dynamic Links a tu archivo build.gradle de nivel de app:
    dependencies {
         compile 'com.google.firebase:firebase-invites:11.2.2'
    }
  4. Vincula libapp.a a la biblioteca estática libdynamic_links.a desde el SDK de C++.

iOS

  1. Si aún no conectas tu app al proyecto de Firebase, puedes hacerlo desde Firebase console.
  2. Agrega Firebase a tu proyecto de iOS.
  3. La biblioteca cliente C++ de Firebase Dynamic Links usa esquemas de URL personalizados en iOS para procesar vínculos. Debes agregar dichos esquemas a tu app para admitir la recepción de Dynamic Links:
    1. Para abrir la configuración de tu proyecto, haz doble clic en el nombre del proyecto en la vista de árbol de la izquierda. Selecciona tu app en la sección TARGETS, haz clic en la pestaña Información y expande la sección Tipos de URL.
    2. Haz clic en el botón + y agrega un esquema de URL para tu ID de cliente invertido. Para obtener este valor, abre el archivo de configuración GoogleService-Info.plist y busca la clave REVERSED_CLIENT_ID. Copia el valor de esa clave y pégalo en el recuadro Esquemas de URL en la página de configuración. Deja los demás campos en blanco.
    3. Haz clic en el botón + y agrega un segundo esquema de URL. Este es idéntico al ID de paquete de tu app. Por ejemplo, si tu ID de paquete es com.example.app, ingresa ese valor en el recuadro Esquemas de URL. Puedes encontrar el ID de paquete de tu app en la pestaña General de la configuración del proyecto (Identidad > Identificador del paquete).
  4. Incluye el siguiente Pod en tu Podfile:
    pod 'Firebase/DynamicLinks'
  5. Ejecuta pod install.
  6. Agrega firebase.framework y firebase_dynamic_links.framework a tu proyecto de Xcode desde el SDK de C++.

Cómo usar la API de Firebase Dynamic Links

Cómo crear e inicializar una app

Para poder crear Dynamic Links, deberás crear un objeto firebase::App y después inicializarlo.

Incluye el archivo de encabezado para firebase::App:

#include "firebase/app.h"

La siguiente parte varía según tu plataforma:

Android

Para crear firebase::App, pasa el entorno de JNI y una referencia jobject a la actividad de Java como argumentos:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

iOS

Crea firebase::App:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

Cómo crear un Dynamic Link largo a partir de parámetros

Para crear un Dynamic Link, crea un objeto DynamicLinkComponents, configura cualquiera de los miembros opcionales de manera adicional y pásalo a dynamic_links::GetShortLink o dynamic_links::GetLongLink.

El siguiente ejemplo simple crea un Dynamic Link largo a https://example.com/ que abre com.example.android.package_name con tu app para Android y com.example.ios con tu app para iOS:

firebase::dynamic_links::IOSParameters ios_parameters("com.example.ios");

firebase::dynamic_links::AndroidParameters android_parameters(
    "com.example.android.package_name");

firebase::dynamic_links::DynamicLinkComponents components(
    "https://example.com/", "abc123.app.goo.gl");
components.android_parameters = &android_parameters;
components.ios_parameters = &ios_parameters;

firebase::dynamic_links::GeneratedDynamicLink long_link =
    firebase::dynamic_links::GetLongLink(components);

Cómo crear un Dynamic Link corto

Para crear un Dynamic Link corto, pasa un vínculo largo generado con anterioridad a GetShortLink o compila DynamicLinkComponents del modo que se indicó más arriba.

GetShortLink toma de forma opcional un parámetro de configuración DynamicLinkOptions adicional con PathLength, lo que te permite controlar cómo se generará el vínculo. Para generar un vínculo corto, se necesita enviar una solicitud de red al backend de Firebase, por lo que GetShortLink es asíncrono y da como resultado un Future<GeneratedLink>.

Por ejemplo:

firebase::dynamic_links::DynamicLinkOptions short_link_options;
short_link_options.path_length = firebase::dynamic_links::kPathLengthShort;

firebase::Future<firebase::dynamic_links::GeneratedDynamicLink> result =
    firebase::dynamic_links::GetShortLink(components, short_link_options);

Si tu programa tiene un bucle de actualización que se ejecuta con regularidad (por ejemplo, 30 o 60 veces por segundo), puedes verificar los resultados una vez por actualización:

if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) {
    firebase::dynamic_links::GeneratedDynamicLink link = *result.result();
    printf("Create short link succeeded: %s\n", link.url.c_str());
  } else {
    printf("Created short link failed with error '%s'\n",
           result.error_message());
  }
}

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.