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

  1. Se você ainda não o fez, adicione o FireBase ao seu projeto Apple .

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

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

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

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

    2. Quando solicitado, ative o .Plist para iOS e clique em Download File .

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

  1. No console do Firebase , abra seu projeto.
  2. Selecione Config remoto no menu para visualizar o painel de configuração remota.
  3. 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.

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

  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 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: