Primeiros passos com a Configuração remota do Firebase

Use a Configuração remota do Firebase para definir parâmetros no app e atualizar os valores 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

  1. Instale o SDK do Firebase para plataformas da Apple.

  2. 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.

  1. 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

    1. Na guia Parâmetros, abra o Menu e selecione Fazer o download dos valores padrão.

    2. Quando solicitado, ative a opção .plist para iOS, e clique em Fazer o download do arquivo.

  2. 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ê 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.

  1. Abra seu projeto no Console do Firebase.
  2. Selecione Configuração remota no menu para ver o painel do recurso.
  3. 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 aplicativo:

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) {
        // ...
      }];
    } else {
        NSLog(@"Config not fetched");
        NSLog(@"Error %@", error.localizedDescription);
    }
    [self displayWelcome];
}];

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 e recomendado para a Configuração remota é de 12 horas, o que significa que a busca pelas configurações no back-end não acontecerá mais de uma vez em um período de 12 horas, independentemente de quantas chamadas de busca forem realmente realizadas. O intervalo mínimo de busca é determinado especificamente na seguinte ordem:

  1. O parâmetro em fetch(long)
  2. O parâmetro em FIRRemoteConfigSettings.MinimumFetchInterval
  3. 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 documentação de estratégias avançadas, incluindo: