Wprowadzenie do Zdalnej konfiguracji Firebase


Za pomocą Zdalnej konfiguracji Firebase możesz definiować parametry w aplikacji i aktualizować ich wartości w chmurze, co pozwala zmieniać wygląd i działanie aplikacji bez jej aktualizacji. Ten przewodnik przedstawia krok po kroku, od czego zacząć, oraz przykładowy kod, który możesz sklonować lub pobrać z repozytorium firebase/quickstart-ios na GitHubie.

Krok 1. Dodaj Zdalną konfigurację do aplikacji

  1. Dodaj Firebase do swojego projektu Apple.

  2. W przypadku Zdalnej konfiguracji usługa Google Analytics jest wymagana do kierowania warunkowego instancji aplikacji na właściwości użytkownika i odbiorców. Upewnij się, że w projekcie masz włączoną usługę Google Analytics.

  3. Utwórz pojedynczy obiekt Zdalnej konfiguracji, jak pokazano w tym przykładzie:

    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;

Ten obiekt służy do przechowywania domyślnych wartości parametrów w aplikacji, pobierania zaktualizowanych wartości parametrów z backendu Zdalnej konfiguracji oraz kontrolowania, kiedy pobierane wartości mają być dostępne dla aplikacji.

W trakcie programowania zalecane jest ustawienie stosunkowo niskiego minimalnego okresu pobierania. Więcej informacji znajdziesz w sekcji Ograniczanie.

Krok 2. Ustaw domyślne wartości parametrów w aplikacji

Domyślne wartości parametrów w aplikacji możesz ustawić w obiekcie Zdalnej konfiguracji, aby aplikacja zachowywała się zgodnie z oczekiwaniami przed nawiązaniem połączenia z backendem Zdalnej konfiguracji. Jeśli w backendzie nie ma ustawionych żadnych wartości domyślnych, będą dostępne wartości domyślne.

  1. Zdefiniuj zbiór nazw i domyślnych wartości parametrów za pomocą obiektu NSDictionary lub pliku plist.

    Jeśli masz już skonfigurowane wartości parametrów backendu Zdalnej konfiguracji, możesz pobrać wygenerowany plik plist zawierający wszystkie wartości domyślne i zapisać go w swoim projekcie 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
    

    Konsola Firebase

    1. Na karcie Parametry otwórz Menu i wybierz Pobierz wartości domyślne.

    2. Gdy pojawi się prośba, włącz rozszerzenie .plist na iOS, a potem kliknij Pobierz plik.

  2. Dodaj te wartości do obiektu Zdalnej konfiguracji za pomocą setDefaults:. Ten przykład ustawia domyślne wartości w aplikacji z pliku plist:

    Swift

    remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")

    Objective-C

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

Krok 3. Pobierz wartości parametrów do wykorzystania w aplikacji

Teraz możesz pobierać wartości parametrów z obiektu Zdalnej konfiguracji. Jeśli ustawisz wartości później w backendzie Zdalnej konfiguracji, pobierzesz je i aktywujesz, będą one dostępne dla Twojej aplikacji. W przeciwnym razie wartości parametrów w aplikacji zostaną skonfigurowane za pomocą metody setDefaults:. Aby uzyskać te wartości, wywołaj metodę configValueForKey:, podając klucz parametru jako argument.

Krok 4. Ustaw wartości parametrów

Za pomocą konsoli Firebase lub interfejsów API backendu Zdalnej konfiguracji możesz tworzyć nowe wartości domyślne backendu, które zastępują wartości w aplikacji zgodnie z wybraną logiką warunkową lub kierowaniem na użytkowników. Z tej sekcji dowiesz się, jak utworzyć te wartości w konsoli Firebase.

  1. Otwórz projekt w konsoli Firebase.
  2. Wybierz z menu Zdalna konfiguracja, aby wyświetlić panel Zdalnej konfiguracji.
  3. Zdefiniuj parametry o takich samych nazwach jak parametry zdefiniowane w aplikacji. Dla każdego parametru możesz ustawić wartość domyślną (która ostatecznie zastąpi wartość domyślną w aplikacji) lub ustawić wartości warunkowe. Więcej informacji znajdziesz w artykule o parametrach i warunkach Zdalnej konfiguracji.

Krok 5. Pobierz i aktywuj wartości

Aby pobrać wartości parametrów ze Zdalnej konfiguracji, wywołaj metodę fetchWithCompletionHandler: lub fetchWithExpirationDuration:completionHandler:. Wszystkie wartości ustawione w backendzie są pobierane i zapisywane w pamięci podręcznej obiektu Zdalnej konfiguracji.

W przypadkach, w których chcesz pobrać i aktywować wartości w ramach jednego wywołania, użyj funkcji fetchAndActivateWithCompletionHandler:.

W tym przykładzie pobierasz wartości z backendu Zdalnej konfiguracji (nie wartości z pamięci podręcznej) i wywołujesz funkcję activateWithCompletionHandler:, by udostępnić je aplikacji:

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);
    }
}];

Te zaktualizowane wartości parametrów mają wpływ na działanie i wygląd aplikacji, dlatego należy aktywować pobrane wartości w czasie umożliwiającym bezproblemowe korzystanie z aplikacji, np. przy następnym uruchomieniu przez niego aplikacji. Więcej informacji i przykładów znajdziesz w artykule Strategie ładowania Zdalnej konfiguracji.

Krok 6. Nasłuchuj aktualizacji w czasie rzeczywistym

Po pobraniu wartości parametrów możesz za pomocą Zdalnej konfiguracji w czasie rzeczywistym nasłuchiwać aktualizacji z backendu Zdalnej konfiguracji. Zdalna konfiguracja w czasie rzeczywistym sygnalizuje połączone urządzenia, gdy dostępne są aktualizacje, i automatycznie pobiera zmiany po opublikowaniu nowej wersji Zdalnej konfiguracji.

Aktualizacje w czasie rzeczywistym są obsługiwane przez pakiet SDK Firebase na platformy Apple w wersji 10.7.0 lub nowszej.

  1. Wywołaj w aplikacji polecenie addOnConfigUpdateListener, aby zacząć nasłuchiwać aktualizacji i automatycznie pobrać nowe lub zaktualizowane wartości parametrów. Poniższy przykład wykrywa aktualizacje, a gdy wywołuje funkcję activateWithCompletionHandler, używa nowo pobranych wartości do wyświetlenia zaktualizowanej wiadomości powitalnej.

    Swift

    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()
        }
      }
    }
    

    Objective-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. Gdy następnym razem opublikujesz nową wersję Zdalnej konfiguracji, urządzenia, na których działa Twoja aplikacja i nasłuchują zmian, wywołają moduł obsługi ukończenia.

Ograniczenia

Jeśli aplikacja pobiera dane zbyt wiele razy w krótkim okresie, wywołania pobierania są ograniczane, a pakiet SDK zwraca wartość FIRRemoteConfigFetchStatusThrottled. Przed pakietem SDK w wersji 6.3.0 limit wynosił 5 żądań pobierania w 60-minutowym okresie (nowsze wersje mają mniej rygorystyczne limity).

Podczas tworzenia aplikacji możesz pobierać ją częściej, aby bardzo często odświeżać pamięć podręczną (wiele razy na godzinę), co pozwala na szybkie iterowanie w trakcie tworzenia i testowania aplikacji. Aktualizacje Zdalnej konfiguracji w czasie rzeczywistym automatycznie pomijają pamięć podręczną po zaktualizowaniu konfiguracji na serwerze. Aby umożliwić szybkie iteracje w projekcie z wieloma deweloperami, możesz tymczasowo dodać w aplikacji właściwość FIRRemoteConfigSettings o niskim minimalnym przedziale czasu pobierania (MinimumFetchInterval).

Domyślny i zalecany interwał pobierania produkcyjnego dla Zdalnej konfiguracji to 12 godzin, co oznacza, że konfiguracje będą pobierane z backendu tylko raz w ciągu 12 godzin, niezależnie od tego, ile faktycznie zostało wywołań pobierania. W szczególności minimalny interwał pobierania jest określany w tej kolejności:

  1. Parametr w pliku fetch(long)
  2. Parametr w pliku FIRRemoteConfigSettings.MinimumFetchInterval
  3. Wartość domyślna to 12 godzin.

Dalsze kroki

Zapoznaj się z przypadkami użycia Zdalnej konfiguracji oraz dokumentacją kluczowych pojęć i zaawansowanych strategii, takich jak: