Use o Configuração remota do Firebase para definir parâmetros no seu app e atualizar os valores na nuvem, permitindo modificar a aparência e o comportamento do app sem a necessidade de distribuir uma atualização. Este guia contém as etapas para começar a usar o recurso e alguns exemplos de código que estão disponíveis para clonagem ou download no repositório do GitHub firebase/quickstart-ios.
Etapa 1: adicionar a Configuração remota ao seu app
Adicione o Firebase ao seu projeto da Apple caso ainda não tenha feito isso.
Na Configuração remota, o Google Analytics é necessário para a segmentação condicional de instâncias de apps para propriedades do usuário e públicos-alvo. Ative o Google Analytics no seu projeto.
Crie o objeto Singleton do Configuração remota, conforme mostrado no exemplo a seguir:
Swift
remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 0 remoteConfig.configSettings = settings
Objective-C
self.remoteConfig = [FIRRemoteConfig remoteConfig]; FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init]; remoteConfigSettings.minimumFetchInterval = 0; self.remoteConfig.configSettings = remoteConfigSettings;
Esse objeto é usado para armazenar valores de parâmetro padrão no app, buscar valores de parâmetros atualizados no back-end da Configuração remota e controlar quando eles são disponibilizados para o app.
Durante o desenvolvimento, recomendamos definir um intervalo de busca mínimo relativamente baixo. Para mais informações, consulte Limitação.
Etapa 2: definir valores de parâmetro padrão no app
Você pode definir os valores de parâmetro padrão no app no objeto da Configuração remota. Assim, o app se comporta de maneira previsível antes de se conectar ao back-end da Configuração remota, e os valores padrão vão estar disponíveis se nenhum tiver sido definido no back-end.
Defina um conjunto de nomes e valores de parâmetros padrão usando um objeto
NSDictionary
ou um arquivo plist (links em inglês).Depois de configurar os valores de parâmetro do back-end da Configuração remota, é possível fazer o download de um arquivo
plist
gerado com todos os valores padrão e salvar esse arquivo no projeto do Xcode.REST
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
Console do Firebase
Na guia Parâmetros, abra o Menu e selecione Fazer o download dos valores padrão.
Quando solicitado, ative a opção .plist para iOS, e clique em Fazer o download do arquivo.
Adicione esses valores ao objeto da Configuração remota usando
setDefaults:
. O exemplo a seguir define valores padrão no aplicativo de um arquivo plist:Swift
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
Objective-C
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
Etapa 3: receber valores de parâmetro para uso no app
Agora você pode receber valores de parâmetro do objeto da Configuração remota. Se mais tarde
você definir valores no back-end da Configuração remota, buscá-los e ativá-los,
eles vão estar disponíveis para o app. Caso contrário, receba os valores de
parâmetro no app usando
setDefaults:
.
Para receber esses valores, chame o método
configValueForKey:
fornecendo a chave de parâmetro como um argumento.
Etapa 4: definir os valores de parâmetro
Com o Console do Firebase ou as APIs de back-end da Configuração remota, crie valores padrão do back-end que substituem os valores no app conforme a lógica condicional ou a segmentação de usuário necessárias. Esta seção traz as etapas do Console do Firebase para criar esses valores.
- Abra seu projeto no Console do Firebase.
- Selecione Configuração remota no menu para explorar o painel do recurso.
- Defina os parâmetros com os mesmos nomes dos definidos no seu app. Para cada um, é possível definir um valor padrão (que, por fim, vai substituir o valor padrão no app) e valores condicionais. Saiba mais em Parâmetros e condições da Configuração remota.
Etapa 5: buscar e ativar valores
Para buscar os valores de parâmetro da Configuração remota, chame o
método
fetchWithCompletionHandler:
ou
fetchWithExpirationDuration:completionHandler:
. Todos os valores definidos no back-end são buscados e
armazenados em cache no objeto da Configuração remota.
Para buscar e ativar valores com uma chamada, use
fetchAndActivateWithCompletionHandler:
.
Este exemplo busca valores no back-end da Configuração remota (não valores em
cache) e chama activateWithCompletionHandler:
para disponibilizá-los para
o app:
Swift
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() }
Objective-C
[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); } }];
Esses valores de parâmetro atualizados afetam o comportamento e a aparência do app. Por isso, ative-os sem prejudicar a experiência do usuário, como da próxima vez que ele abrir o app. Confira informações e exemplos em Estratégias de carregamento da Configuração remota.
Etapa 6: detectar atualizações em tempo real
Depois de buscar valores de parâmetros, é possível usar a Configuração remota em tempo real para detectar atualizações do back-end. A Configuração remota em tempo real sinaliza para dispositivos conectados quando atualizações estão disponíveis e busca mudanças automaticamente depois que você publica uma nova versão da Configuração remota.
O SDK do Firebase para plataformas da Apple v10.7.0 e as versões mais recentes oferecem suporte para atualizações em tempo real.
No seu app, chame
addOnConfigUpdateListener
para detectar atualizações e buscar novos valores de parâmetros automaticamente. O exemplo a seguir detecta atualizações e usa os valores recém-buscados quandoactivateWithCompletionHandler
é chamado para mostrar uma mensagem de boas-vindas atualizada.Swift
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() } } }
Objective-C
__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]; }); }]; } }];
Na próxima vez que você publicar uma nova versão da Configuração remota, os dispositivos que estão executando seu app e detectando as mudanças vão chamar o gerenciador de conclusão.
Limitação
Se um aplicativo fizer muitas buscas em um curto período, as chamadas de busca serão limitadas, e o SDK retornará FIRRemoteConfigFetchStatusThrottled
. Antes da versão 6.3.0 do SDK, o
limite era de cinco solicitações de busca em um intervalo de 60 minutos.
As versões mais recentes têm limites mais flexíveis.
Durante o desenvolvimento de apps, sempre faça buscas para atualizar o cache
com mais frequência (muitas vezes por hora) para permitir a iteração rápida enquanto você desenvolve
e testa seu app. As atualizações da Configuração remota em tempo real ignoram automaticamente
o cache quando a configuração é atualizada no servidor. Caso queira acomodar a iteração rápida
em um projeto com vários desenvolvedores, é possível adicionar temporariamente uma propriedade
FIRRemoteConfigSettings
com um intervalo de busca mínimo baixo
(MinimumFetchInterval
) no app.
O intervalo de busca de produção padrão e recomendado da Configuração remota é de 12 horas. Portanto, a busca pelas configurações no back-end não vai acontecer mais de uma vez em 12 horas, e isso independe de quantas chamadas de busca forem realmente realizadas. O intervalo mínimo de busca é determinado especificamente na seguinte ordem:
- O parâmetro em
fetch(long)
- O parâmetro em
FIRRemoteConfigSettings.MinimumFetchInterval
- O valor padrão de 12 horas
Próximas etapas
Se ainda não tiver feito isso, confira os casos de uso da Configuração remota, bem como alguns dos conceitos principais e a documentação de estratégias avançadas, que incluem: