Comience con Firebase Remote Config


Puede usar la configuración remota de Firebase para definir parámetros en su aplicación y actualizar sus valores en la nube, lo que le permite modificar la apariencia y el comportamiento de su aplicación sin distribuir una actualización de la aplicación. Esta guía lo guía a través de los pasos para comenzar y proporciona algún código de muestra, todo lo cual está disponible para clonar o descargar desde el repositorio de GitHub Firebase/QuickStart-Ius .

Paso 1: Agregue la configuración remota a su aplicación

  1. Instale el SDK de Firebase para las plataformas Apple.

  2. Cree el objeto de configuración remota singleton, como se muestra en el siguiente ejemplo:

    Rápido

    remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 0
    remoteConfig.configSettings = settings

    C objetivo

    self.remoteConfig = [FIRRemoteConfig remoteConfig];
    FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
    remoteConfigSettings.minimumFetchInterval = 0;
    self.remoteConfig.configSettings = remoteConfigSettings;

Este objeto se utiliza para almacenar valores de parámetros predeterminados en la aplicación, obtener valores de parámetros actualizados desde el backend de configuración remota y el control cuando los valores obtenidos están disponibles para su aplicación.

Durante el desarrollo, se recomienda establecer un intervalo de búsqueda mínimo relativamente bajo. Ver estrangulamiento para obtener más información.

Paso 2: Establecer valores de parámetro predeterminados en la aplicación

Puede establecer valores de parámetros predeterminados en APP en el objeto de configuración remota, de modo que su aplicación se comporte según lo previsto antes de que se conecte al backend de configuración remota, y para que los valores predeterminados estén disponibles si ninguno está configurado en el backend.

  1. Definir un conjunto de nombres de parámetros y valores de parámetros predeterminados utilizando un objeto NSDictionary o un archivo PLIST .

    Si ya ha configurado los valores de parámetros de Backend de configuración remota, puede descargar un archivo plist generado que incluye todos los valores predeterminados y guardarlo en su proyecto XCode.

    DESCANSAR

    curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=PLIST -o RemoteConfigDefaults.plist
    

    Consola de base de fuego

    1. En la pestaña Parámetros , abra el menú y seleccione Descargar valores predeterminados .

    2. Cuando se le solicite, habilite .PLIST para iOS , luego haga clic en Descargar archivo .

  2. Agregue estos valores al objeto de configuración remoto usando setDefaults: . El siguiente ejemplo establece valores predeterminados en la aplicación de un archivo PLIST:

    Rápido

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    C objetivo

    [self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];

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

Ahora puede obtener valores de parámetros del objeto de configuración remota. Si luego establece valores en el backend de configuración remota, obténlos y luego los activa, esos valores están disponibles para su aplicación. De lo contrario, obtiene los valores de parámetros en la aplicación configurados usando setDefaults: . Para obtener estos valores, llame al método configValueForKey: proporcionando la tecla de parámetro como argumento.

Paso 4: Establecer valores de parámetros

Usando la consola Firebase o las API de backend de configuración remota , puede crear nuevos valores predeterminados de backend que anulen los valores en la aplicación de acuerdo con la lógica condicional o la orientación de usuario deseada. Esta sección lo guía a través de los pasos de la consola Firebase para crear estos valores.

  1. En la consola Firebase , abra su proyecto.
  2. Seleccione la configuración remota en el menú para ver el control de configuración remoto.
  3. Defina los 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 también puede establecer valores condicionales. Para obtener más información, consulte los parámetros y condiciones de configuración remota .

Paso 5: obtener y activar valores

Para obtener valores de parámetros de la configuración remota, llame a fetchWithCompletionHandler: o fetchWithExpirationDuration:completionHandler: Método. Cualquier valor que establezca en el backend se obtiene y se almacena en caché en el objeto de configuración remota.

Para los casos en los que desea obtener y activar valores en una llamada, use fetchAndActivateWithCompletionHandler: .

Este ejemplo obtiene valores del backend de configuración remota (no los valores en caché) y las llamadas a activateWithCompletionHandler: para ponerlos a disposición de la aplicación:

Rápido

remoteConfig.fetch { (status, error) -> Void in
  if status == .success {
    print("Config fetched!")
    self.remoteConfig.activate { changed, error in
      // ...
    }
  } else {
    print("Config not fetched")
    print("Error: \(error?.localizedDescription ?? "No error available.")")
  }
  self.displayWelcome()
}

C objetivo

[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) {
    if (status == FIRRemoteConfigFetchStatusSuccess) {
        NSLog(@"Config fetched!");
      [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
        if (error != nil) {
          NSLog(@"Activate error: %@", error.localizedDescription);
        } else {
          dispatch_async(dispatch_get_main_queue(), ^{
            [self displayWelcome];
          });
        }
      }];
    } else {
        NSLog(@"Config not fetched");
        NSLog(@"Error %@", error.localizedDescription);
    }
}];

Debido a que estos valores de parámetros actualizados afectan el comportamiento y la apariencia de su aplicación, debe activar los valores obtenidos en un momento que garantice una experiencia sin problemas para su usuario, como la próxima vez que el usuario abra su aplicación. Consulte estrategias de carga de configuración remota para obtener más información y ejemplos.

Paso 6: Escuche las actualizaciones en tiempo real

Después de obtener valores de parámetros, puede usar la configuración remota en tiempo real para escuchar actualizaciones del backend de configuración remota. Señales de configuración remota en tiempo real a dispositivos conectados cuando las actualizaciones están disponibles y obtiene automáticamente los cambios después de publicar una nueva versión de configuración remota.

Las actualizaciones en tiempo real son compatibles con Firebase SDK para las plataformas Apple V10.7.0+ y más alto.

  1. En su aplicación, llame a addOnConfigUpdateListener para comenzar a escuchar actualizaciones y obtener automáticamente cualquier valor de parámetro nuevo o actualizado. El siguiente ejemplo escucha las actualizaciones y cuando se llama a activateWithCompletionHandler , utiliza los valores recientemente obtenidos para mostrar un mensaje de bienvenida actualizado.

    Rápido

    remoteConfig.addOnConfigUpdateListener { configUpdate, error in
      guard let configUpdate, error == nil else {
        print("Error listening for config updates: \(error)")
      }
    
      print("Updated keys: \(configUpdate.updatedKeys)")
    
      self.remoteConfig.activate { changed, error in
        guard error == nil else { return self.displayError(error) }
        DispatchQueue.main.async {
          self.displayWelcome()
        }
      }
    }
    

    C objetivo

    __weak __typeof__(self) weakSelf = self;
    [self.remoteConfig addOnConfigUpdateListener:^(FIRRemoteConfigUpdate * _Nonnull configUpdate, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error listening for config updates %@", error.localizedDescription);
      } else {
        NSLog(@"Updated keys: %@", configUpdate.updatedKeys);
    
        __typeof__(self) strongSelf = weakSelf;
        [strongSelf.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) {
          if (error != nil) {
            NSLog(@"Activate error %@", error.localizedDescription);
          }
    
          dispatch_async(dispatch_get_main_queue(), ^{
            [strongSelf displayWelcome];
          });
        }];
      }
    }];
    
  2. La próxima vez que publique una nueva versión de su configuración remota, los dispositivos que ejecutan su aplicación y escuchan cambios llamará al controlador de finalización.

estrangulamiento

Si una aplicación busca demasiadas veces en un período de tiempo corto, las llamadas de búsqueda están estranguladas y el SDK devuelve FIRRemoteConfigFetchStatusThrottled . Antes de SDK versión 6.3.0, el límite era de 5 solicitudes de recuperación en una ventana de 60 minutos (las versiones más nuevas tienen límites más permisivos).

Durante el desarrollo de aplicaciones, es posible que desee obtener más a menudo para actualizar el caché con mucha frecuencia (muchas veces por hora) para permitirle iterar rápidamente a medida que desarrolla y probar su aplicación. Las actualizaciones de configuración remota en tiempo real evitan automáticamente el caché cuando la configuración se actualiza en el servidor. Para acomodar una iteración rápida en un proyecto con numerosos desarrolladores, puede agregar temporalmente una propiedad FIRRemoteConfigSettings con un intervalo de recuperación mínimo bajo ( MinimumFetchInterval ) en su aplicación.

El intervalo de recuperación de producción predeterminado y recomendado para la configuración remota es de 12 horas, lo que significa que las configuraciones no se obtendrán del backend más de una vez en una ventana de 12 horas, independientemente de cuántas llamadas de recuperación se realicen. Específicamente, el intervalo de búsqueda mínimo se determina en este orden siguiente:

  1. El parámetro en fetch(long)
  2. El parámetro en FIRRemoteConfigSettings.MinimumFetchInterval
  3. El valor predeterminado de 12 horas

Próximos pasos

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