Crea 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 compilar 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://example.page.link/WXYZ

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

Antes de comenzar

Antes de poder usar Firebase Dynamic Links, tendrás que hacer lo siguiente:

  • Registra tu proyecto de C++ y configúralo para que use Firebase.

    Si tu proyecto de C++ ya usa Firebase, significa que ya está registrado y configurado para esa plataforma.

  • Agrega el SDK de Firebase C++ a tu proyecto de C++.

Ten en cuenta que agregar Firebase a un proyecto de C++ implica realizar tareas en la consola de Firebase y en el proyecto abierto de C++ (por ejemplo, descargar archivos de configuración de Firebase desde la consola y transferirlos al proyecto de C++).

Android

  1. En Firebase console, abre la sección Dynamic Links.
  2. Si aún no has aceptado las Condiciones del Servicio ni configurado un prefijo de URI para tus Dynamic Links, deberás hacerlo cuando el sistema lo solicite.

    Si ya tienes un prefijo de URI de Dynamic Links, anótalo. Debes proporcionar un prefijo de URI de Dynamic Links cuando crees Dynamic Links de manera programática.

  3. Recomendado: Especifica los patrones de URL que se permiten en tus vínculos directos y de resguardo. De esa manera, evitas que grupos no autorizados creen Dynamic Links que se redireccionen desde tu dominio a otros sitios que no puedes controlar. Consulta Incluye patrones de URL en la lista de entidades permitidas.

iOS

  1. En Firebase console, abre la sección Dynamic Links.
  2. Si aún no has aceptado las Condiciones del Servicio ni configurado un prefijo de URI para tus Dynamic Links, deberás hacerlo cuando el sistema lo solicite.

    Si ya tienes un prefijo de URI de Dynamic Links, anótalo. Debes proporcionar un dominio Dynamic Links cuando crees Dynamic Links de manera programática.

  3. La biblioteca cliente de C++ Firebase Dynamic Links usa esquemas de URL personalizados en iOS para procesar vínculos. Debes agregar estos 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 a la izquierda. Selecciona tu app en la sección OBJETIVOS, 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 el ID de cliente invertido. A fin de 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 el mismo que el ID del paquete de tu app. Por ejemplo, si el ID del paquete es com.example.ios, ingresa ese valor en el recuadro Esquemas de URL. Puedes encontrar el ID del paquete de tu app en la pestaña General de la configuración del proyecto (Identidad > Identificador de paquete).

Usa la consola de Firebase

Si quieres generar un único Dynamic Link, ya sea para fines de pruebas o para que tu equipo de marketing cree fácilmente un vínculo que pueda usarse en algo como una publicación de redes sociales, la forma más sencilla sería visitar la consola de Firebase o crear uno manualmente siguiendo el formulario paso a paso.

Dominios personalizados

Puedes aumentar el control sobre el desarrollo de la marca de tu Dynamic Link si usas tu propio dominio en lugar de un subdominio goo.gl o page.link. Sigue estas instrucciones para configurar un dominio personalizado para tu proyecto.

Usar la API de Firebase Dynamic Links

Crea e inicializa una app

Antes de crear Dynamic Links, deberás crear y, luego, inicializar un objeto firebase::App

Incluye el archivo de encabezado para firebase::App:

#include "firebase/app.h"

La siguiente parte cambia 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"));

Inicializa la biblioteca Dynamic Links

Antes de crear un Dynamic Link, primero debes inicializar la biblioteca Dynamic Links:

::firebase::dynamic_links::Initialize(app, null);

Crea 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 permite crear un Dynamic Link largo a https://www.example.com/ que abre com.example.android.package_name en tu app para Android y com.example.ios en la 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://www.example.com/", "example.page.link");
components.android_parameters = &android_parameters;
components.ios_parameters = &ios_parameters;

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

Crear un objeto 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 adicional DynamicLinkOptions con la propiedad PathLength, lo que te permite controlar cómo se genera 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());
  }
}