Primeros pasos con 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

Android

  1. Si aún no conectas tu app al proyecto de Firebase, puedes hacerlo desde Firebase console.
  2. Si aún no habilitas Firebase Dynamic Links, puedes hacerlo desde Firebase console. Para ello, abre la sección Dynamic Links y acepta las condiciones del servicio, si se te solicita que lo hagas. Dado que Firebase Invites se basa en Firebase Dynamic Links, debes habilitar Firebase Dynamic Links para usar Firebase Invites.
  3. Agrega Firebase a tu proyecto de Android.
  4. Agrega la dependencia para Firebase Invites a tu archivo build.gradle de nivel de app:
    dependencies {
         compile 'com.google.firebase:firebase-invites:11.4.0'
    }
  5. Vincula libapp.a y la biblioteca estática libinvites.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. Si aún no habilitas Firebase Dynamic Links, puedes hacerlo desde Firebase console. Para ello, abre la sección Dynamic Links y acepta las condiciones del servicio, si se te solicita que lo hagas. Dado que Firebase Invites se basa en Firebase Dynamic Links, debes habilitar Firebase Dynamic Links para usar Firebase Invites.
  3. Agrega Firebase a tu proyecto de iOS.
  4. La biblioteca cliente de C++ de Firebase Invites usa el acceso con Google en iOS. Los usuarios deben acceder para enviar invitaciones y debes agregar esquemas de URL personalizados a tu app para admitir esto:
    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 URL Schemes. Puedes encontrar el ID de paquete de tu app en la pestaña General de la configuración del proyecto (Identidad > Identificador del paquete).
  5. Incluye el siguiente Pod en tu Podfile:
    pod 'Firebase/Invites'
  6. Ejecuta pod install.
  7. Agrega firebase.framework y firebase_invites.framework desde el SDK de C++ a tu proyecto de Xcode.

Envía invitaciones

Crea e inicializa una app

Para poder enviar invitaciones, debes crear e inicializar un objeto firebase::App.

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"));

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 aplícale tu configuración de 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. Muestra sus resultados mediante firebase::Future, el cual 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 un llamado 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 SendInvite() se complete (lo cual te informa que se completó 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 tu app en su plataforma.

Si tienes más de una aplicación en cada plataforma, puedes pasar el ID de cliente de Firebase de la otra plataforma para configurar ios_platform_client_id o android_platform_client_id.

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 e inicializar un objeto firebase::App.

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 de 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 envíalo a la biblioteca de Invites con SetListener().

Para recibir invitaciones, tu clase de Agente 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.
  }
}

Enviar comentarios sobre…

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