Primeiros passos com a Configuração remota do Firebase


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 orienta você nas etapas de introdução e fornece alguns exemplos de código, todos disponíveis para clonagem ou download no repositório GitHub firebase/quickstart-ios .

Etapa 1: adicionar o Configuração remota ao seu app

  1. Adicione o Firebase ao seu projeto Apple , caso ainda não o tenha feito.

  2. Para a Configuração remota, o Google Analytics é necessário para a segmentação condicional de instâncias de aplicativos para propriedades de usuários e públicos-alvo. Certifique-se de ativar o Google Analytics em seu projeto.

  3. Crie o objeto singleton do Configuração remota, conforme 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 do back-end do Configuração remota e controlar quando os valores buscados são disponibilizados para seu aplicativo.

Durante o desenvolvimento, é recomendado definir um intervalo mínimo de busca relativamente baixo. Consulte Limitação para obter mais informações.

Etapa 2: definir valores de parâmetros padrão no aplicativo

Você pode definir valores de parâmetros padrão no aplicativo no objeto do Configuração remota, para que seu aplicativo se comporte conforme esperado antes de se conectar ao back-end do Configuração remota e para que os valores padrão estejam disponíveis se nenhum for definido no back-end.

  1. 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 dos parâmetros de back-end do Configuração remota, poderá fazer download de um arquivo plist gerado que inclui todos os valores padrão e salvá-lo em 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

    1. Na guia Parâmetros , abra o menu e selecione Baixar valores padrão .

    2. Quando solicitado, habilite .plist para iOS e clique em Baixar arquivo .

  2. Adicione estes valores ao objeto do Configuração remota usando setDefaults: . O exemplo a seguir define valores padrão no aplicativo a partir de um arquivo plist:

    Rápido

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objetivo-C

    [self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];

Etapa 3: obtenha valores de parâmetros para usar em seu aplicativo

Agora você pode obter valores de parâmetros do objeto do Configuração remota. Se você definir valores posteriormente no back-end do Configuração remota, buscá-los e ativá-los, esses valores estarão disponíveis para seu aplicativo. Caso contrário, você obterá os valores dos parâmetros no aplicativo configurados usando setDefaults: . Para obter esses valores, chame o método configValueForKey: fornecendo a chave do parâmetro como argumento.

Etapa 4: definir valores de parâmetros

Usando o console do Firebase ou as APIs de back-end do Configuração remota , você pode criar novos valores padrão de back-end que substituem os valores no aplicativo de acordo com a lógica condicional desejada ou a segmentação do usuário. Esta seção orienta você nas etapas do Firebase console para criar esses valores.

  1. No console do Firebase , abra seu projeto.
  2. Selecione Configuração remota no menu para visualizar o painel do Configuração remota.
  3. Defina parâmetros com os mesmos nomes dos parâmetros definidos 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 da configuração remota .

Etapa 5: buscar e ativar valores

Para buscar valores de parâmetros do 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 do Configuração remota.

Para casos em que você deseja buscar e ativar valores em uma chamada, use fetchAndActivateWithCompletionHandler: .

Este exemplo busca valores do back-end do Configuração remota (não valores armazenados em cache) e chama activateWithCompletionHandler: para disponibilizá-los ao 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 garanta uma experiência tranquila para o usuário, como na próxima vez que o usuário abrir o aplicativo. Consulte Estratégias de carregamento do Configuração remota para mais informações e exemplos.

Etapa 6: ouça atualizações em tempo real

Depois de buscar os valores dos parâmetros, você poderá usar o Configuração remota em tempo real para detectar atualizações do back-end do Configuração remota. A Configuração remota em tempo real sinaliza aos dispositivos conectados quando há atualizações disponíveis e busca automaticamente as alterações após a publicação de uma nova versão da Configuração remota.

As atualizações em tempo real são compatíveis com o SDK do Firebase para plataformas Apple v10.7.0+ e superiores.

  1. No seu aplicativo, chame addOnConfigUpdateListener para começar a escutar atualizações e buscar automaticamente quaisquer valores de parâmetro novos ou atualizados. O exemplo a seguir escuta atualizações e quando activateWithCompletionHandler é 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];
          });
        }];
      }
    }];
    
  2. Na próxima vez que você publicar uma nova versão do Configuração remota, os dispositivos que estiverem executando seu aplicativo e aguardando alterações chamarão o gerenciador de conclusão.

Estrangulamento

Se um aplicativo buscar muitas vezes 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 uma janela de 60 minutos (as versões mais recentes têm limites mais permissivos).

Durante o desenvolvimento do aplicativo, talvez você queira buscar com mais frequência para atualizar o cache com muita frequência (muitas vezes por hora) para permitir iterar rapidamente à medida que desenvolve e testa seu aplicativo. As atualizações da 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 vários desenvolvedores, você pode adicionar temporariamente uma propriedade FIRRemoteConfigSettings com um intervalo de busca mínimo baixo ( MinimumFetchInterval ) em seu aplicativo.

O intervalo de busca de produção padrão e recomendado para o 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 forem realmente feitas. Especificamente, o intervalo mínimo de busca é determinado 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óximos passos

Se ainda não o fez, explore os casos de uso do Configuração remota e dê uma olhada em alguns dos principais conceitos e documentação de estratégias avançadas, incluindo: