Comience con Firebase Remote Config


Puedes usar Firebase Remote Config para definir parámetros en tu aplicación y actualizar sus valores en la nube, lo que te permite modificar la apariencia y el comportamiento de tu aplicación sin distribuir una actualización de la aplicación.

La biblioteca de Remote Config se utiliza para almacenar valores de parámetros predeterminados en la aplicación, recuperar valores de parámetros actualizados desde el backend de Remote Config y controlar cuándo los valores recuperados están disponibles para su aplicación. Para obtener más información, consulte Estrategias de carga de Remote Config .

Esta guía lo guía a través de los pasos para comenzar y proporciona código de muestra, todo el cual está disponible para clonar o descargar desde el repositorio de GitHub firebase/quickstart-unity .

Paso 1: agregue Remote Config a su aplicación

Antes de poder utilizar Remote Config , debe:

  • Registre su proyecto de Unity y configúrelo para usar Firebase.

    • Si tu proyecto de Unity ya usa Firebase, entonces ya está registrado y configurado para Firebase.

    • Si no tiene un proyecto de Unity, puede descargar una aplicación de muestra .

  • Agregue el SDK de Firebase Unity (específicamente, FirebaseRemoteConfig.unitypackage ) a su proyecto de Unity.

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

Paso 2: establecer valores de parámetros predeterminados en la aplicación

Puede establecer valores de parámetros predeterminados en la aplicación en el objeto de Remote Config, de modo que su aplicación se comporte según lo previsto antes de conectarse al backend de Remote Config y para que los valores predeterminados estén disponibles si no se establece ninguno en el backend.

Para hacer esto, cree un diccionario de cadenas y complételo con pares clave/valor que representen los valores predeterminados que desea agregar. Si ya configuró los valores de los parámetros de backend de Remote Config, puede descargar un archivo que contenga estos pares clave/valor y usarlo para construir su diccionario de cadenas. Para obtener más información, consulte Descargar los valores predeterminados de la plantilla de Remote Config .

(Las propiedades que no son cadenas se convertirán al tipo de propiedad cuando se llame a SetDefaultsAsync() ).

System.Collections.Generic.Dictionary<string, object> defaults =
  new System.Collections.Generic.Dictionary<string, object>();

// These are the values that are used if we haven't fetched data from the
// server
// yet, or if we ask for values that the server doesn't have:
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults)
  .ContinueWithOnMainThread(task => {

Paso 3: obtenga valores de parámetros para usar en su aplicación

Ahora puede obtener valores de parámetros del objeto Remote Config. Si establece valores en el backend de Remote Config, los recupera y luego los activa, esos valores están disponibles para su aplicación. De lo contrario, obtendrás los valores de los parámetros en la aplicación configurados usando SetDefaultsAsync() .

Para obtener estos valores, utilice GetValue() y proporcione la clave del parámetro como argumento. Esto devuelve un ConfigValue , que tiene propiedades para convertir el valor en varios tipos base.

Paso 4: Establecer los valores de los parámetros

  1. En Firebase console , abre tu proyecto.
  2. Seleccione Remote Config en el menú para ver el panel de Remote Config.
  3. Defina parámetros con los mismos nombres que los parámetros que definió en su aplicación. Para cada parámetro, puede establecer un valor predeterminado (que eventualmente anulará el valor predeterminado en la aplicación) y valores condicionales. Para obtener más información, consulte Parámetros y condiciones de Remote Config .

Paso 5: recuperar y activar valores (según sea necesario)

Para recuperar valores de parámetros del backend de Remote Config, llame al método FetchAsync() . Cualquier valor que establezca en el backend se recupera y se almacena en caché en el objeto de Remote Config.

// Start a fetch request.
// FetchAsync only fetches new data if the current data is older than the provided
// timespan.  Otherwise it assumes the data is "recent enough", and does nothing.
// By default the timespan is 12 hours, and for production apps, this is a good
// number. For this example though, it's set to a timespan of zero, so that
// changes in the console will always show up immediately.
public Task FetchDataAsync() {
  DebugLog("Fetching data...");
  System.Threading.Tasks.Task fetchTask =
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(
      TimeSpan.Zero);
  return fetchTask.ContinueWithOnMainThread(FetchComplete);
}

En el código anterior, FetchComplete es un método cuya firma coincide con los parámetros de una de las sobrecargas de ContinueWithOnMainThread() .

En el código de muestra siguiente, al método FetchComplete se le pasa la tarea anterior ( fetchTask ), lo que permite a FetchComplete determinar si finalizó. El código utiliza Info.LastFetchStatus para luego determinar si el final también fue exitoso. Si es así, los valores de los parámetros de Remote Config se activan mediante ActivateAsync() .

private void FetchComplete(Task fetchTask) {
  if (!fetchTask.IsCompleted) {
    Debug.LogError("Retrieval hasn't finished.");
    return;
  }

  var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
  var info = remoteConfig.Info;
  if(info.LastFetchStatus != LastFetchStatus.Success) {
    Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
    return;
  }

  // Fetch successful. Parameter values must be activated to use.
  remoteConfig.ActivateAsync()
    .ContinueWithOnMainThread(
      task => {
        Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
    });
}

Los valores obtenidos mediante FetchAsync() se almacenan en caché localmente cuando se completa la recuperación, pero no están disponibles hasta que se invoca ActivateAsync() . Esto le permite asegurarse de que los nuevos valores no se apliquen a mitad del cálculo o en otros momentos que puedan causar problemas o comportamientos extraños.

Paso 6: escuche las actualizaciones en tiempo real

Después de recuperar los valores de los parámetros, puede usar Remote Config en tiempo real para escuchar las actualizaciones desde el backend de Remote Config. Remote Config en tiempo real envía señales a los dispositivos conectados cuando hay actualizaciones disponibles y recupera automáticamente los cambios después de publicar una nueva versión de Remote Config.

Las actualizaciones en tiempo real son compatibles con Firebase Unity SDK v11.0.0+ y versiones posteriores para plataformas Android y Apple.

  1. En su aplicación, agregue un OnConfigUpdateListener para comenzar a escuchar actualizaciones y recuperar automáticamente cualquier valor de parámetro nuevo o actualizado. Luego, cree un ConfigUpdateListenerEventHandler para procesar eventos de actualización. El siguiente ejemplo busca actualizaciones y utiliza los valores recién obtenidos para mostrar un mensaje de bienvenida actualizado.
// Invoke the listener.
void Start()
{
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
    += ConfigUpdateListenerEventHandler;
}

// Handle real-time Remote Config events.
void ConfigUpdateListenerEventHandler(
   object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) {
  if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) {
    Debug.Log(String.Format("Error occurred while listening: {0}", args.Error));
    return;
  }

  Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys));
  // Activate all fetched values and then display a welcome message.
  remoteConfig.ActivateAsync().ContinueWithOnMainThread(
    task => {
        DisplayWelcomeMessage();
    });
}

// Stop the listener.
void OnDestroy() {
    Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
      -= ConfigUpdateListenerEventHandler;
}

La próxima vez que publique una nueva versión de su Remote Config, los dispositivos que ejecutan su aplicación y escuchan los cambios llamarán al controlador de finalización.

Próximos pasos

Si aún no lo ha hecho, explore los casos de uso de Remote Config y eche un vistazo a algunos de los conceptos clave y la documentación de estrategias avanzadas, que incluyen: