Use a Configuração remota do Firebase para definir parâmetros no app e atualizar os valores dele na nuvem. Dessa forma, é possível modificar a aparência e o comportamento do seu app sem distribuir uma atualização dele. Veja neste guia os primeiros passos e códigos de amostra, que estão disponíveis para clonagem ou download no repositório do GitHub firebase/quickstart-ios.
Adicionar a Configuração remota ao seu app
Instale o SDK do Firebase para plataformas da Apple.
Crie o objeto Singleton da 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âmetros padrão no app, buscar valores de parâmetros atualizados do back-end da Configuração remota e controlar quando os valores buscados são disponibilizados ao app.
Durante o desenvolvimento, recomendamos definir um intervalo de busca mínimo relativamente baixo. Para mais informações, consulte Limitação.
Definir valores de parâmetros padrão no app
É possível definir os valores de parâmetros padrão no app com o 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 estarão disponíveis, caso nenhum tenha 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âmetros de back-end do Configuração remota, é possível fazer o download de um arquivo
plist
gerado com todos os valores padrão para salvar 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"];
Receber valores de parâmetro para uso no app
É possível receber valores de parâmetro do objeto da Configuração remota. Se posteriormente
você definir valores no back-end da Configuração remota, buscá-los e ativá-los,
eles estarão disponíveis para seu app. Caso contrário, você vai receber os valores no app
configurados usando
setDefaults:
.
Para receber esses valores, chame o método
configValueForKey:
fornecendo a chave de parâmetro como um argumento.
Definir os valores de parâmetro
Com o Console do Firebase ou as APIs de back-end da Configuração remota, é possível criar novos valores padrão do back-end que substituem os valores no app de acordo com a lógica condicional ou a segmentação por usuário desejadas. Veja nesta seção as etapas do Console do Firebase para criar esses valores.
- Abra seu projeto no Console do Firebase.
- Selecione Configuração remota no menu para ver o painel do recurso.
- Defina os parâmetros com os mesmos nomes dos definidos no seu app. Para cada um, é possível determinar um valor padrão (que possivelmente substituirá o valor padrão no app), além de valores condicionais. Para saber mais, consulte Parâmetros e condições do recurso Configuração remota.
Buscar e ativar valores
Para buscar 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 obtidos e
armazenados em cache no objeto da Configuração remota.
Quando quiser buscar e ativar valores com uma chamada, use
fetchAndActivateWithCompletionHandler:
.
Este exemplo busca valores do back-end da Configuração remota (não valores
em cache) e chama activateWithCompletionHandler:
para disponibilizá-los
ao 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); } }];
Como esses valores de parâmetro atualizados afetam o comportamento e a aparência do app, ative-os quando isso não prejudicar a experiência do usuário. Por exemplo, na próxima vez em que ele abrir o app. Consulte Estratégias de carregamento da Configuração remota para mais informações e exemplos.
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 permissivos.
Durante o desenvolvimento de apps, convém atualizar o cache com muita frequência
(muitas vezes por hora) para permitir a iteração rápida à medida que você desenvolve e testa seu
app. Para possibilitar a iteração rápida em um projeto com vários desenvolvedores, você
pode adicionar temporariamente uma propriedade FIRRemoteConfigSettings
com
um intervalo mínimo de busca baixo (MinimumFetchInterval
) no seu aplicativo.
O intervalo de busca de produção padrão do recurso Configuração remota é de 12 horas, o que significa que a busca pelas configurações no back-end não vai acontecer mais de uma vez em uma janela de 12 horas, independentemente 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, veja os casos de uso do recurso Configuração remota e analise alguns dos principais conceitos e a documentação de estratégias avançadas, incluindo: