Primeros pasos con Firebase Invites para Unity

Para escribir tu app cliente multiplataforma de Firebase Invites con Unity, usa la API de Firebase Invites.

Antes de comenzar

Para poder usar Firebase Invites, debes crear un proyecto de Firebase y agregar los paquetes del SDK de Firebase Unity a tu proyecto de Unity.

Configuración:

Requisitos previos

Android

  • Unity 5.0 o una versión más reciente
  • NDK de Android 10d o una versión más reciente

iOS

  • Unity 5.0 o una versión más reciente
  • Xcode 8.0 o una versión más reciente

Si todavía no tienes un proyecto de Unity, puedes descargar uno de los ejemplos de inicio rápido para probar una función de Firebase específica. Si usas un inicio rápido, recuerda obtener el identificador de paquete en la configuración del proyecto, ya que lo necesitarás en el próximo paso.

Configura la app en Firebase console

Para agregar Firebase a la app, debes tener un proyecto y un archivo de configuración de Firebase.

Para crear un proyecto de Firebase:

  1. Crea un proyecto en Firebase console si no lo hiciste anteriormente. Haz clic en Agregar proyecto. Si ya tienes un proyecto de Google asociado con la app para dispositivos móviles, selecciónalo en el menú desplegable Nombre del proyecto. De lo contrario, escribe un nombre para crear un proyecto nuevo.
  2. Opcional: Edita el ID del proyecto. Automáticamente, se asigna un ID único a tu proyecto, que se usa en características visibles de Firebase de manera pública, como las URL de bases de datos y tu subdominio de Firebase Hosting. Puedes cambiarlo en este momento si deseas usar un subdominio específico.
  3. Sigue los pasos de configuración restantes y haz clic en Crear proyecto (o Agregar Firebase si usas un proyecto existente) a fin de aprovisionar recursos para el proyecto. Este proceso suele tardar algunos minutos. Cuando finalice, verás la descripción general del proyecto.

Android

  1. Haz clic en Agrega Firebase a tu app para Android y sigue los pasos de la configuración. Si importas un proyecto de Google existente, es posible que esto ocurra de forma automática y solo tengas que descargar el archivo de configuración.
  2. Ingresa el nombre del paquete de la app cuando se te solicite. Es importante que ingreses el nombre de paquete que tu app está usando. Esto solo se puede configurar cuando agregas una app al proyecto de Firebase.
  3. Durante el proceso, descargarás un archivo google-services.json. Puedes volver a descargarlo en cualquier momento.
  4. Después de agregar el código de inicialización, ejecuta la app para verificar con Firebase console que instalaste Firebase correctamente.

iOS

  1. Haz clic en Agrega Firebase a tu app para iOS y sigue los pasos de configuración. Si importas un proyecto de Google existente, es posible que esto ocurra de forma automática y solo tengas que descargar el archivo de configuración.
  2. Ingresa el ID de paquete de la app cuando se te solicite. Es importante que ingreses el ID de paquete que está usando la app. Esto solo se puede configurar cuando agregas una app al proyecto de Firebase.
  3. Durante el proceso, descargarás un archivo GoogleService-Info.plist. Puedes volver a descargarlo en cualquier momento.
  4. Después de agregar el código de inicialización, ejecuta la app para verificar con Firebase console que instalaste Firebase correctamente.
  5. Arrastra el archivo GoogleService-Info.plist que se descargó de Firebase console a cualquier carpeta del proyecto de Unity.

Agrega el SDK de Firebase Unity a la app

  1. Descarga el SDK de Firebase Unity.
  2. Selecciona el elemento de menú Recursos > Importar paquete > Paquete personalizado.
  3. Importa el paquete FirebaseInvites.unitypackage del SDK de Firebase Unity que descargaste previamente.
  4. Cuando aparezca la ventana Import Unity Package, haz clic en el botón Import.

Inicializa el SDK

El SDK de Firebase Unity en Android requiere los Servicios de Google Play, que deben estar actualizados. Se debe agregar el siguiente código al inicio de la aplicación para buscar y, de forma opcional, actualizar los Servicios de Google Play a la versión que el SDK de Firebase Unity requiere. De esta manera, se podrá llamar a otros métodos en el SDK.

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp, i.e.
    //   app = Firebase.FirebaseApp.DefaultInstance;
    // where app is a Firebase.FirebaseApp property of your application class.

    // Set a flag here indicating that Firebase is ready to use by your
    // application.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

Compila la app

Android

  1. Selecciona la opción de menú File > Build Settings.
  2. Selecciona Android en la lista Platform.
  3. Haz clic en Switch Platform para establecer a Android como plataforma seleccionada.
  4. Espera a que se detenga el ícono giratorio (de compilación en proceso) que se encuentra en la esquina inferior derecha de la barra de estado de Unity.
  5. Haz clic en Build and Run.

iOS

  1. Selecciona la opción de menú File > Build Settings.
  2. Selecciona iOS en la lista Platform.
  3. Haz clic en Switch Platform para establecer a iOS como plataforma seleccionada.
  4. Espera a que se detenga el ícono giratorio (de compilación en proceso) que se encuentra en la esquina inferior derecha de la barra de estado de Unity.
  5. Haz clic en Build and Run.

Enviar invitaciones

Configura la invitación

Crea un objeto Invite nuevo para configurar la invitación:

var invite = new Firebase.Invites.Invite() {
    TitleText = "Invites Test App",
    MessageText = "Please try my app! It's awesome.",
    CallToActionText = "Download it for FREE",
    DeepLinkUrl = "http://google.com/abc"
}

Haz clic aquí para ver la lista completa de opciones de invitación.

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 SendInviteAsync():

FirebaseInvites.SendInviteAsync(invite);

Esto muestra la IU del cliente de Invites, lo que permite que el usuario seleccione los destinatarios y modifique el mensaje si lo desea. Esta IU permanece en pantalla hasta que el usuario decide enviar la invitación o cancelarla.

SendInviteAsync() actúa de inmediato y muestra la IU en forma asíncrona. Además, muestra sus resultados a través de un System.Threading.Tasks.Task, al que puedes consultar para saber si se envió la invitación y determinar en qué momento la IU deja de estar en pantalla, o puedes usar su método ContinueWith a fin de activar el código automáticamente cuando se complete.

A continuación, te mostramos un ejemplo del envío de una invitación y de la lectura de los resultados:

public void SendInvite() {
  Debug.Log("Sending an invitation...");
  var invite = new Firebase.Invites.Invite() {
    TitleText = "Invites Test App",
    MessageText = "Please try my app! It's awesome.",
    CallToActionText = "Download it for FREE",
    DeepLinkUrl = "http://google.com/abc"
  }
  Firebase.Invites.FirebaseInvites
    .SendInviteAsync(invite).ContinueWith(HandleSentInvite);
}

void HandleSentInvite(Task< Firebase.Invites.SendInviteResult > sendTask) {
  if (sendTask.IsCanceled) {
    Debug.Log("Invitation canceled.");
  } else if (sendTask.IsFaulted) {
    Debug.Log("Invitation encountered an error:");
    Debug.Log(sendTask.Exception.ToString());
  } else if (sendTask.IsCompleted) {
    int inviteCount = (new List(sendTask.Result.InvitationIds)).Count;
    Debug.Log("SendInvite: " + inviteCount + " invites sent successfully.");
    foreach (string id in sendTask.Result.InvitationIds) {
      Debug.Log("SendInvite: Invite code: " + id);
    }
  }
}

Invitaciones multiplataforma

Si tu proyecto de Firebase console contiene de forma exacta una aplicación para cada plataforma, Firebase Invites asocia las aplicaciones entre sí automáticamente, de manera que, por ejemplo, si un usuario de iOS hace clic en una invitación que envió un usuario de Android, se lo envía al lugar correcto para instalar tu app en su plataforma.

Si tienes más de una aplicación en cada plataforma, puedes establecer AndroidPlatformClientId o IOSPlatformClientId, lo que te permitirá pasar el ID de cliente de Firebase de la aplicación en 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 al contenido, si enviaste una. La app también recibe el ID de invitación, que coincide con el ID de invitación del remitente.

Regístrate para recibir la invitación entrante

Para verificar si hay invitaciones, debes registrarte en el evento InviteReceived.

void Start() {
    Firebase.Invites.FirebaseInvites.InviteReceived += OnInviteReceived;
    Firebase.Invites.FirebaseInvites.InviteNotReceived += OnInviteNotReceived;
    Firebase.Invites.FirebaseInvites.ErrorReceived += OnErrorReceived;
}

void OnInviteReceived(object sender,
                      Firebase.Invites.InviteReceivedEventArgs e) {
  if (e.InvitationId != "") {
    Debug.Log("Invite received: Invitation ID: " + e.InvitationId);
    Firebase.Invites.FirebaseInvites.ConvertInvitationAsync(
        e.InvitationId).ContinueWith(HandleConversionResult);
  }
  if (e.DeepLink.ToString() != "") {
    Debug.Log("Invite received: Deep Link: " + e.DeepLink);
  }
}

void OnInviteNotReceived(object sender, System.EventArgs e) {
  Debug.Log("No Invite or Deep Link received on start up");
}

void OnErrorReceived(object sender,
                     Firebase.Invites.InviteErrorReceivedEventArgs e) {
  Debug.LogError("Error occurred received the invite: " + e.ErrorMessage);
}

Enviar comentarios sobre…

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