Crear enlaces dinámicos con C++

Puede crear vínculos dinámicos cortos o largos con la API de vínculos dinámicos de Firebase. La API requiere varias estructuras de parámetros opcionales para crear enlaces. También se pueden crear enlaces cortos a partir de un enlace largo generado previamente. Firebase Dynamic Links genera una URL como la siguiente:

https://example.page.link/WXYZ

El SDK de C++ funciona tanto para Android como para iOS, y se requiere alguna configuración adicional para cada plataforma.

Antes de que empieces

Antes de poder utilizar Firebase Dynamic Links , debes:

  • Registre su proyecto C++ y configúrelo para usar Firebase.

    Si su proyecto de C++ ya usa Firebase, entonces ya está registrado y configurado para Firebase.

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

Tenga en cuenta que agregar Firebase a su proyecto de C++ implica tareas tanto en Firebase console como en su proyecto de C++ abierto (por ejemplo, descarga archivos de configuración de Firebase desde la consola y luego los mueve a su proyecto de C++).

Androide

  1. En Firebase console, abre la sección Enlaces dinámicos .
  2. Si aún no ha aceptado los términos de servicio y no ha configurado un prefijo URI para sus vínculos dinámicos, hágalo cuando se le solicite.

    Si ya tiene un prefijo URI de Dynamic Links, anótelo. Debe proporcionar un prefijo URI de Dynamic Links cuando crea Dynamic Links mediante programación.

  3. Recomendado : especifique los patrones de URL permitidos en sus enlaces profundos y enlaces alternativos. Al hacerlo, evita que partes no autorizadas creen vínculos dinámicos que redireccionen desde su dominio a sitios que no controla. Consulte Patrones de URL de lista blanca .

iOS

  1. En Firebase console, abre la sección Enlaces dinámicos .
  2. Si aún no ha aceptado los términos de servicio y no ha configurado un prefijo URI para sus vínculos dinámicos, hágalo cuando se le solicite.

    Si ya tiene un prefijo URI de Dynamic Links, anótelo. Debe proporcionar un dominio de Dynamic Links cuando crea Dynamic Links mediante programación.

  3. La biblioteca cliente Firebase Dynamic Links C++ utiliza esquemas de URL personalizados en iOS para procesar enlaces. Debe agregar esquemas de URL personalizados a su aplicación para admitir la recepción de enlaces dinámicos:
    1. Para abrir la configuración de su proyecto, haga doble clic en el nombre del proyecto en la vista de árbol de la izquierda. Seleccione su aplicación en la sección OBJETIVOS , luego seleccione la pestaña Información y expanda la sección Tipos de URL .
    2. Haga clic en el botón + y agregue un esquema de URL para su ID de cliente invertido. Para encontrar este valor, abra el archivo de configuración GoogleService-Info.plist y busque la clave REVERSED_CLIENT_ID . Copie el valor de esa clave y péguelo en el cuadro Esquemas de URL en la página de configuración. Deje los demás campos en blanco.
    3. Haga clic en el botón + y agregue un segundo esquema de URL. Este es el mismo que el ID del paquete de tu aplicación. Por ejemplo, si su ID de paquete es com.example.ios , escriba ese valor en el cuadro Esquemas de URL . Puede encontrar el ID del paquete de su aplicación en la pestaña General de la configuración del proyecto ( Identidad > Identificador del paquete ).

Usa la consola de Firebase

Si desea generar un único enlace dinámico, ya sea con fines de prueba o para que su equipo de marketing cree fácilmente un enlace que pueda usarse en algo como una publicación en las redes sociales, la forma más sencilla sería visitar Firebase console y crear uno. manualmente siguiendo el formulario paso a paso.

Dominios personalizados

Puede tener un mayor control sobre la marca de su vínculo dinámico utilizando su propio dominio en lugar de un subdominio goo.gl o page.link . Siga estas instrucciones para configurar un dominio personalizado para su proyecto.

Usando la API de enlaces dinámicos de Firebase

Crear e inicializar la aplicación

Antes de poder crear vínculos dinámicos, deberá crear e inicializar un objeto firebase::App .

Incluya el archivo de encabezado para firebase::App :

#include "firebase/app.h"

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

Androide

Cree firebase::App y pase el entorno JNI y una referencia jobject a la actividad Java como argumentos:

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

iOS

Crea la firebase::App :

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

Inicializar la biblioteca de vínculos dinámicos

Antes de crear un vínculo dinámico, primero debe inicializar la biblioteca de vínculos dinámicos:

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

Crear un enlace dinámico largo a partir de parámetros

Para crear un vínculo dinámico, cree un objeto DynamicLinkComponents, configure cualquiera de los miembros opcionales para una configuración adicional y páselo dynamic_links::GetShortLink dynamic_links::GetLongLink .

El siguiente ejemplo mínimo crea un enlace dinámico largo a https://www.example.com/ que se abre con su aplicación de Android com.example.android.package_name y su aplicación de iOS com.example.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 enlace dinámico corto

Para crear un enlace dinámico corto, pase un enlace largo generado previamente a GetShortLink o cree DynamicLinkComponents de la misma manera que antes.

GetShortLink opcionalmente toma un parámetro de configuración DynamicLinkOptions adicional con PathLength ; esto le permite controlar cómo se debe generar el enlace. Generar un enlace corto requiere una solicitud de red al backend de Firebase, por lo que GetShortLink es asíncrono y devuelve 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 su programa tiene un ciclo de actualización que se ejecuta regularmente (por ejemplo, 30 o 60 veces por segundo), puede 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());
  }
}