Ir a la consola

Comienza a usar Firebase Invites para C++

Para escribir tu app cliente multiplataforma de Firebase Invites con C++, usa la API de Firebase Invites. El SDK de C++ funciona tanto en Android como en iOS, aunque se requiere un poco de configuración adicional para cada plataforma.

Antes de comenzar

Sigue estos pasos para usar Firebase Invites:

  • 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.

  • En tu archivo build.gradle de nivel de proyecto, asegúrate de incluir el repositorio Maven de Google en las secciones buildscript y allprojects.

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

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

Habilita Firebase Dynamic Links

Debes habilitar Firebase Dynamic Links para usar Firebase Invites, ya que este último se basa en el primero.

  1. En Firebase console, abre la sección Dynamic Links.

  2. Si aún no has aceptado las Condiciones del Servicio, deberás hacerlo cuando se te solicite.

Agrega esquemas de URL personalizados (solo para iOS)

La biblioteca cliente de Firebase Invites para C++ usa el Acceso con Google en iOS. Los usuarios deben acceder a fin de enviar invitaciones y debes agregar esquemas de URL personalizados a tu app para admitir esta función:

  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.

  2. Selecciona tu app en la sección OBJETIVOS. Luego, haz clic en la pestaña Información y expande la sección Tipos de URL.

  3. Haz clic en el botón + y, luego, agrega un esquema de URL para tu ID de cliente invertido. Sigue estos pasos a fin de obtener este valor:

    1. Abre el archivo de configuración GoogleService-Info.plist y busca la clave REVERSED_CLIENT_ID.

    2. Copia el valor de esa clave y pégalo en el recuadro Esquemas de URL en la página de configuración.

    3. Deja los demás campos en blanco.

  4. 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.app, escribe 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).

Envía invitaciones

Crea e inicializa una app

Para poder enviar invitaciones, debes crear y también 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"));

Crea y configura la invitación

Incluye el archivo de encabezado para enviar Invites:

#include "firebase/invites.h"

Inicializa la biblioteca de Invites:

::firebase::invites::Initialize(app);

Crea una instancia nueva de firebase::invites::Invite y, luego, configúrala con las opciones de configuración de tu invitación:

firebase::invites::Invite invite;
invite.title_text = "Invite Friends";
invite.message_text = "Try my app today, and get 200 free coins!";
invite.call_to_action_text = "Download now!";

Consulta esta sección para ver la lista completa de opciones de invitación, incluidas las que se admiten en cada plataforma.

Para obtener más información sobre la personalización de invitaciones, consulta Firebase Invites: Prácticas recomendadas.

Envía la invitación

Cuando estés listo para mostrar la invitación, llama a SendInvite():

firebase::invites::SendInvite(invite);

Esto mostrará la IU del cliente de Invites, lo que permite al usuario seleccionar los destinatarios y modificar el mensaje si lo desea. Esta IU permanecerá en la pantalla hasta que el usuario seleccione enviar la invitación o cancelarla.

SendInvite() actúa en forma inmediata y muestra la IU en forma asíncrona. Además, muestra sus resultados mediante firebase::Future, que puedes consultar para saber si la invitación se envió y determinar en qué momento la IU deja de estar en pantalla.

También puedes obtener el firebase::Future más reciente mediante una llamada a SendInviteLastResult(). Esto muestra el mismo resultado que la llamada más reciente a SendInvite().

auto future_result = firebase::invites::SendInviteLastResult();
if (future_result.status() == future::kFutureStatusComplete) {
    if (future_result.error() == 0) {
        auto result = *future.result();
        if (result.invitation_ids.size() > 0) {
            // One or more invitations were sent. You can log the invitation IDs here for
            // analytics purposes, as they will be the same on the receiving side.
        }
        else {
            // Zero invitations were sent. This tells us that the user canceled sending
            // invitations.
        }
    } else {
        // error() is nonzero, which means an error occurred. You can check
        // future_result.error_message() for more information.
    }
} else {
    // The SendInvite() operation has not completed yet, which means the Invites
    // client UI is still on screen. Check the status() again soon.
}

También puedes usar OnCompletion() para configurar una devolución de llamada y recibir una notificación cuando se complete SendInvite() (que te informa cuando finaliza la IU de Invites), en lugar de hacer un sondeo de status(). Consulta la documentación de firebase::Future para obtener más detalles.

Invitaciones multiplataforma

Si tu proyecto de Firebase console contiene exactamente una aplicación para cada plataforma, Firebase Invites asociará las aplicaciones entre sí automáticamente, por lo que los usuarios de iOS (por ejemplo) que hagan clic en una invitación que envió un usuario de Android se dirigirán al lugar correcto para instalar la app en su plataforma.

Si tienes más de una aplicación en cada plataforma, puedes configurar ios_platform_client_id o android_platform_client_id, lo que te permitirá pasar el ID de cliente de Firebase de la plataforma alternativa.

Recibe invitaciones

Cuando un usuario recibe una invitación, si aún no instaló la app, puede elegir instalarla desde la tienda de apps de su plataforma.

Tras la instalación (en caso de que haya sido necesaria), la app se inicia y recibe la URL que conduce al contenido, si enviaste una. La app también recibirá el ID de invitación, que coincidirá con el ID de invitación del remitente.

Generalmente, tu app debe comprobar las invitaciones entrantes una vez durante el inicio.

Crea e inicializa una app

Para poder verificar si se recibieron invitaciones, deberás crear y también 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"));

Implementa un agente de escucha y verifica una invitación entrante

Incluye el archivo de encabezado para recibir Invites:

#include "firebase/invites.h"

Inicializa la biblioteca de Invites:

::firebase::invites::Initialize(app);

Crea un objeto que implemente firebase::invites::Listener y suminístralo a la biblioteca de Invites con SetListener().

Para recibir invitaciones, tu clase de objeto de escucha debe implementar la función virtual OnInviteReceived. Puedes anular el método para recibir un ID de invitación, si se recibió uno.

void OnInviteReceived(const char* invitation_id, const char* deep_link,
                      bool is_strong_match) override {
  // Fetch succeeded, let's find out what we received.
  if (invitation_id != nullptr) {
    // The app received an invitation ID. This will match the invitation ID
    // that the sender got when they sent the invitation, so you can use this
    // to track when invitations are completed.
  }
  if (deep_link != nullptr) {
    // The app received a Dynamic Link. This may have come from an invitation
    // (if invite.invitation_id is set), or it might have been sent using
    // Firebase Dynamic Links.
    // In any event, the app can now act on this link as you see fit.
  }
}