Você pode usar o Firebase Remote Config para definir parâmetros no seu aplicativo e atualizar seus valores na nuvem, permitindo modificar a aparência e o comportamento do seu aplicativo sem distribuir uma atualização do aplicativo. Este guia o leva pelas etapas para começar e fornece algum código de exemplo, o que está disponível para clonar ou baixar do repositório do Firebase/Quickstart-Iios GitHub.
Etapa 1: Adicione a configuração remota ao seu aplicativo
Se você ainda não o fez, adicione o FireBase ao seu projeto Apple .
Para configuração remota, o Google Analytics é necessário para a segmentação condicional das instâncias do aplicativo às propriedades e públicos do usuário. Certifique -se de ativar o Google Analytics em seu projeto.
Crie o objeto de configuração remota Singleton, como mostrado no exemplo a seguir:
Rápido
remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 0 remoteConfig.configSettings = settings
Objetivo-C
self.remoteConfig = [FIRRemoteConfig remoteConfig]; FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init]; remoteConfigSettings.minimumFetchInterval = 0; self.remoteConfig.configSettings = remoteConfigSettings;
Este objeto é usado para armazenar valores de parâmetros padrão no aplicativo, buscar valores de parâmetros atualizados no back-end de configuração remota e controle quando valores buscados são disponibilizados para o seu aplicativo.
Durante o desenvolvimento, é recomendável definir um intervalo de busca mínima relativamente baixo. Veja estrangulamento para obter mais informações.
Etapa 2: defina valores de parâmetros padrão no aplicativo
Você pode definir valores de parâmetros padrão no aplicativo no objeto de configuração remota, para que seu aplicativo se comporte como pretendido antes de se conectar ao back-end de configuração remota e para que valores padrão estejam disponíveis se nenhum estiver definido no back-end.
Defina um conjunto de nomes de parâmetros e valores de parâmetros padrão usando um objeto
NSDictionary
ou um arquivo Plist .Se você já configurou os valores de parâmetros de back -end de configuração remota, pode baixar um arquivo
plist
gerado que inclua todos os valores padrão e salvá -lo no seu projeto 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
Console do Firebase
Na guia Parâmetros , abra o menu e selecione Baixar valores padrão .
Quando solicitado, ative o .Plist para iOS e clique em Download File .
Adicione esses valores ao objeto de configuração remota usando
setDefaults:
. O exemplo a seguir define valores padrão no aplicativo de um arquivo Plist:Rápido
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
Objetivo-C
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
Etapa 3: Obtenha valores de parâmetros a serem usados em seu aplicativo
Agora você pode obter valores de parâmetros do objeto de configuração remota. Se você definir valores posteriormente no back -end de configuração remota, busque -os e ativá -los, esses valores estão disponíveis para o seu aplicativo. Caso contrário, você obtém os valores dos parâmetros no aplicativo configurados usando setDefaults:
.. Para obter esses valores, ligue para o Método configValueForKey:
fornecendo a chave do parâmetro como um argumento.
Etapa 4: Defina os valores dos parâmetros
Usando o console do Firebase ou as APIs de back-end de configuração remota , você pode criar novos valores padrão de back-end que substituem os valores do aplicativo de acordo com a lógica condicional desejada ou a segmentação do usuário. Esta seção o leva pelas etapas do console do Firebase para criar esses valores.
- No console do Firebase , abra seu projeto.
- Selecione Config remoto no menu para visualizar o painel de configuração remota.
- Defina parâmetros com os mesmos nomes que os parâmetros que você definiu em seu aplicativo. Para cada parâmetro, você pode definir um valor padrão (que eventualmente substituirá o valor padrão do aplicativo) e também pode definir valores condicionais. Para saber mais, consulte parâmetros e condições de configuração remota .
Etapa 5: buscar e ativar valores
Para buscar valores de parâmetros na configuração remota, ligue para o fetchWithCompletionHandler:
ou fetchWithExpirationDuration:completionHandler:
Method. Quaisquer valores que você definir no back -end são buscados e armazenados em cache no objeto de configuração remota.
Para os casos em que você deseja buscar e ativar valores em uma chamada, use fetchAndActivateWithCompletionHandler:
.
Este exemplo busca valores do back -end de configuração remota (não valores em cache) e chamadas activateWithCompletionHandler:
para disponibilizá -los para o aplicativo:
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() }
Objetivo-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); } }];
Como esses valores de parâmetros atualizados afetam o comportamento e a aparência do seu aplicativo, você deve ativar os valores buscados em um momento que garante uma experiência suave para o seu usuário, como na próxima vez que o usuário abre seu aplicativo. Consulte estratégias de carregamento de configuração remota para obter mais informações e exemplos.
Etapa 6: Ouça atualizações em tempo real
Depois de buscar valores de parâmetros, você pode usar a configuração remota em tempo real para ouvir atualizações do back-end de configuração remota. Os sinais de configuração remotos em tempo real para dispositivos conectados quando as atualizações estão disponíveis e buscam automaticamente as alterações depois de publicar uma nova versão de configuração remota.
As atualizações em tempo real são suportadas pelo Firebase SDK para plataformas Apple v10.7.0+ e superior.
No seu aplicativo, ligue para
addOnConfigUpdateListener
para começar a ouvir atualizações e buscar automaticamente quaisquer valores de parâmetros novos ou atualizados. O exemplo a seguir ouve as atualizações e, quandoactivateWithCompletionHandler
é chamado, usa os valores recém -buscados para exibir uma mensagem de boas -vindas atualizada.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() } } }
Objetivo-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 sua configuração remota, os dispositivos que estão executando seu aplicativo e a escuta para alterações chamarão o manipulador de conclusão.
Estrangulamento
Se um aplicativo buscar muitas vezes em um curto período de tempo, as chamadas de busca serão reduzidas e o SDK retornará FIRRemoteConfigFetchStatusThrottled
. Antes da versão 6.3.0 do SDK, o limite era de 5 solicitações de busca em uma janela de 60 minutos (as versões mais recentes têm limites mais permissivos).
Durante o desenvolvimento de aplicativos, você pode buscar com mais frequência para atualizar o cache com muita frequência (muitas vezes por hora) para permitir que você itera rapidamente à medida que desenvolve e testar seu aplicativo. As atualizações de configuração remota em tempo real ignoram automaticamente o cache quando a configuração é atualizada no servidor. Para acomodar a iteração rápida em um projeto com inúmeros desenvolvedores, você pode adicionar temporariamente uma propriedade FIRRemoteConfigSettings
com um baixo intervalo de busca mínima ( MinimumFetchInterval
) em seu aplicativo.
O intervalo de busca de produção padrão e recomendado para a configuração remota é de 12 horas, o que significa que as configurações não serão buscadas no back -end mais de uma vez em uma janela de 12 horas, independentemente de quantas chamadas de busca são realmente feitas. Especificamente, o intervalo de busca mínimo é determinado nesta ordem seguinte:
- O parâmetro em
fetch(long)
- O parâmetro em
FIRRemoteConfigSettings.MinimumFetchInterval
- O valor padrão de 12 horas
Próximos passos
Se você ainda não o fez, explore os casos de uso da configuração remota e dê uma olhada em alguns dos principais conceitos e documentação de estratégias avançadas, incluindo: