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. 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-ios .
Paso 1: agregue Remote Config a su aplicación
Si aún no lo has hecho, agrega Firebase a tu proyecto de Apple .
Para Remote Config, se requiere Google Analytics para la orientación condicional de instancias de aplicaciones a audiencias y propiedades de usuario. Asegúrese de habilitar Google Analytics en su proyecto.
Cree el objeto singleton de Remote Config, 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, 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.
Durante el desarrollo, se recomienda establecer un intervalo de recuperación mínimo relativamente bajo. Consulte Limitación para obtener más información.
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.
Defina 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 los parámetros del backend de Remote Config, puede descargar un archivo
plist
generado que incluya 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
En la pestaña Parámetros , abra el menú y seleccione Descargar valores predeterminados .
Cuando se le solicite, habilite .plist para iOS y luego haga clic en Descargar archivo .
Agregue estos valores al objeto de Remote Config usando
setDefaults:
. El siguiente ejemplo establece valores predeterminados en la aplicación desde un archivo plist:Rápido
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
C objetivo
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
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 luego establece valores en el backend de Remote Config, los recupera y luego los activa, esos valores estarán disponibles para su aplicación. De lo contrario, obtendrá los valores de los parámetros en la aplicación configurados usando setDefaults:
. Para obtener estos valores, llame al método configValueForKey:
proporcionando la clave del parámetro como argumento.
Paso 4: Establecer los valores de los parámetros
Con Firebase console o las API de backend de Remote Config , puedes crear nuevos valores predeterminados de backend que anulen los valores de la aplicación según la lógica condicional o la segmentación de usuarios que desees. Esta sección lo guía a través de los pasos de Firebase console para crear estos valores.
- En Firebase console , abre tu proyecto.
- Seleccione Remote Config en el menú para ver el panel de Remote Config.
- 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 también puede establecer valores condicionales. Para obtener más información, consulte Parámetros y condiciones de Remote Config .
Paso 5: buscar y activar valores
Para recuperar valores de parámetros de Remote Config, llame al método fetchWithCompletionHandler:
o fetchWithExpirationDuration:completionHandler:
Cualquier valor que establezca en el backend se recupera y se almacena en caché en el objeto de Remote Config.
Para los casos en los que desee recuperar y activar valores en una sola llamada, utilice fetchAndActivateWithCompletionHandler:
.
Este ejemplo recupera valores del backend de Remote Config (no valores almacenados en caché) y llama a activateWithCompletionHandler:
para que estén disponibles para 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 recuperados en un momento que garantice una experiencia fluida para su usuario, como la próxima vez que el usuario abra su aplicación. Consulte Estrategias de carga de Remote Config para obtener más información y ejemplos.
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 el SDK de Firebase para plataformas Apple v10.7.0+ y superiores.
En su aplicación, llame a
addOnConfigUpdateListener
para comenzar a escuchar actualizaciones y recuperar automáticamente cualquier valor de parámetro nuevo o actualizado. El siguiente ejemplo busca actualizaciones y, cuando se llamaactivateWithCompletionHandler
, utiliza los valores recién 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]; }); }]; } }];
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.
estrangulamiento
Si una aplicación se recupera demasiadas veces en un corto período de tiempo, las llamadas de recuperación se limitan y el SDK devuelve FIRRemoteConfigFetchStatusThrottled
. Antes de la versión 6.3.0 del SDK, el límite era de 5 solicitudes de recuperación en un período de 60 minutos (las versiones más nuevas tienen límites más permisivos).
Durante el desarrollo de la aplicación, es posible que desee realizar la búsqueda con más frecuencia para actualizar el caché con mucha frecuencia (muchas veces por hora) para permitirle iterar rápidamente a medida que desarrolla y prueba su aplicación. Las actualizaciones de Remote Config en tiempo real omiten automáticamente el caché cuando la configuración se actualiza en el servidor. Para dar cabida a 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 Remote Config es de 12 horas, lo que significa que las configuraciones no se recuperarán del backend más de una vez en un período de 12 horas, independientemente de cuántas llamadas de recuperación se realicen realmente. Específicamente, el intervalo de recuperación mínimo se determina en el siguiente orden:
- El parámetro en
fetch(long)
- El parámetro en
FIRRemoteConfigSettings.MinimumFetchInterval
- El valor predeterminado de 12 horas.
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: