Pierwsze kroki ze Zdalnej konfiguracji Firebase


Za pomocą Firebase Remote Config możesz definiować parametry w aplikacji i zmieniać ich wartości w chmurze, co umożliwia modyfikowanie wyglądu i zachowania aplikacji bez rozpowszechniania jej aktualizacji. W tym przewodniku znajdziesz instrukcje rozpoczęcia pracy oraz przykładowy kod, który możesz skopiować lub pobrać z repozytorium GitHub firebase/quickstart-ios.

Krok 1. Dodaj Remote Config do aplikacji

  1. Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu Apple.

  2. W przypadku Remote Config usługa Google Analytics jest wymagana do warunkowego kierowania instancji aplikacji na właściwości użytkowników i listy odbiorców. Upewnij się, że w projekcie włączysz Google Analytics.

  3. Utwórz obiekt Remote Config w ramach obiektu singleton, jak 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 Remote Config oraz kontrolowania, kiedy pobrane wartości są udostępniane aplikacji.

Podczas tworzenia zalecamy ustawić stosunkowo krótki minimalny interwał pobierania. Więcej informacji znajdziesz w sekcji Ograniczanie.

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

W obiekcie Remote Config możesz ustawić domyślne wartości parametrów w aplikacji, aby aplikacja działała zgodnie z oczekiwaniami przed nawiązaniem połączenia z backendem Remote Config, a jeśli w backendzie nie zostały ustawione żadne wartości domyślne, będą dostępne.

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

    Jeśli masz już skonfigurowane wartości parametrów backendu Remote Config, możesz pobrać wygenerowany plik plist zawierający wszystkie wartości domyślne i zapisać go w 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ę taka prośba, włącz plik .plist na iOS, a potem kliknij Pobierz plik.

  2. Dodaj te wartości do obiektu Remote Config za pomocą elementu setDefaults:. W tym przykładzie wartości domyślne w aplikacji są ustawiane w 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 Remote Config. Jeśli później ustawisz wartości w Remote Config na serwerze, pobierzesz je, a potem aktywujesz, będą one dostępne w aplikacji. W przeciwnym razie otrzymasz wartości parametrów w aplikacji skonfigurowane za pomocą setDefaults:. Aby uzyskać te wartości, wywołaj metodę configValueForKey:, podając jako argument klucz parametru.

Krok 4. Ustaw wartości parametrów

Za pomocą konsoli Firebase lub interfejsów API backendu Remote Config możesz utworzyć nowe domyślne wartości backendu, które zastąpią wartości w aplikacji zgodnie z odpowiednią logiką warunkową lub kierowaniem na użytkowników. W tej sekcji znajdziesz instrukcje tworzenia tych wartości w konsoli Firebase.

  1. W konsoli Firebase otwórz projekt.
  2. Wybierz z menu Remote Config, aby wyświetlić panel Remote Config.
  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) albo ustawić wartości warunkowe. Więcej informacji znajdziesz w artykule Remote ConfigParametry i warunki.

Krok 5. Pobierz i aktywuj wartości

Aby pobrać wartości parametrów z funkcji Remote Config, wywołaj metodę fetchWithCompletionHandler: lub fetchWithExpirationDuration:completionHandler:. Wszystkie wartości ustawione na zapleczu są pobierane i przechowywane w pamięci podręcznej w obiekcie Remote Config.

Jeśli chcesz pobrać i aktywować wartości w jednym wywołaniu, użyj fetchAndActivateWithCompletionHandler:.

W tym przykładzie wartości są pobierane z back-endu Remote Config (nie są to wartości z poziomu pamięci podręcznej) i wywołują funkcję activateWithCompletionHandler:, aby 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 wpływają na działanie i wygląd aplikacji, dlatego musisz aktywować pobrane wartości w czasie, który zapewni użytkownikom płynne działanie, np. gdy następnym razem otworzy on Twoją aplikację. Więcej informacji i przykłady znajdziesz w artykule Strategie wczytywania Zdalnej konfiguracji.

Krok 6. Słuchaj aktualizacji w czasie rzeczywistym

Po pobraniu wartości parametrów możesz używać interfejsu Remote Config w czasie rzeczywistym do odbierania aktualizacji z back-endu Remote Config. W czasie rzeczywistym Remote Config sygnalizuje połączonym urządzeniom, że są dostępne aktualizacje, i automatycznie pobiera zmiany po opublikowaniu nowej wersji Remote Config.

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

  1. W aplikacji wywołaj funkcję addOnConfigUpdateListener, aby zacząć nasłuchiwać aktualizacji i automatycznie pobierać nowe lub zaktualizowane wartości parametrów. Ten przykład nasłuchuje aktualizacji, a po wywołaniu funkcji 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ę Remote Config, urządzenia, na których jest uruchomiona aplikacja i które nasłuchują zmian, wywołają metodę obsługi zakończenia.

Ograniczenia

Jeśli aplikacja pobierze zbyt wiele razy w krótkim czasie, wywołania pobierania zostaną ograniczone, a pakiet SDK zwróci FIRRemoteConfigFetchStatusThrottled. Przed wersją 6.3.0 pakietu SDK limit wynosił 5 żądań pobierania w okresie 60 minut (nowsze wersje mają bardziej liberalne limity).

Podczas tworzenia aplikacji warto często pobierać dane, aby bardzo często (często na godzinę) odświeżać pamięć podręczną, co pozwoli na szybkie iteracje podczas tworzenia i testowania aplikacji. Zdalna konfiguracja w czasie rzeczywistym automatycznie pomija pamięć podręczną po zaktualizowaniu konfiguracji na serwerze. Aby umożliwić szybkie iterowanie w projekcie z licznymi deweloperami, możesz tymczasowo dodać do aplikacji właściwość FIRRemoteConfigSettings z niskim minimalnym interwałem pobierania (MinimumFetchInterval).

Domyślny i zalecany interwał pobierania w produkcji dla Remote Config wynosi 12 godzin, co oznacza, że konfiguracje nie będą pobierane z back-endu częściej niż raz na 12 godzin, niezależnie od liczby wywołań do pobierania. Minimalny odstęp czasu pobierania jest określany w tej kolejności:

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

Dalsze kroki

Zapoznaj się z przypadkami użycia Remote Config i zapoznaj się z niektórymi kluczowymi pojęciami i dokumentacją zaawansowanych strategii, takimi jak: