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. Z tego przewodnika dowiesz się, Google Analytics i udostępniamy w nich przykładowy kod, dostępnych do sklonowania lub pobrania z firebase/quickstart-ios repozytorium GitHub.

Krok 1. Dodaj Remote Config do aplikacji

  1. Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego 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 typu 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 programowania zalecamy ustawienie stosunkowo niskiej minimalnej wartości pobierania interwału. 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 Remote Config dzięki czemu aplikacja działa zgodnie z oczekiwaniami jeszcze przed nawiązaniem połączenia Remote Config dzięki temu, że w razie braku wartości domyślne są dostępne ustawionym w backendzie.

  1. Zdefiniuj zbiór nazw parametrów i domyślne wartości parametrów za pomocą tagu NSDictionary lub plik plist.

    Jeśli masz już skonfigurowane wartości parametrów backendu Remote Config, możesz pobrać wygenerowany plik plist, który zawiera wszystkie wartości domyślne, i zapisz 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. W sekcji Parametry otwórz Menu i kliknij 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ą atrybutu 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, które będą używane 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 Remote Config interfejsów API backendu, możesz utworzyć nowe domyślne wartości backendu, które zastąpią wartości w aplikacji zgodnie z 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 Remote Config z menu, aby wyświetlić Remote Config panelu.
  3. Zdefiniuj parametry o takich samych nazwach jak parametry zdefiniowane w sekcji do aplikacji. Dla każdego parametru możesz ustawić wartość domyślną (która będzie zastąpić domyślną wartość w aplikacji), a także ustawić wartości warunkowych. Więcej informacji znajdziesz w Remote ConfigParametry i warunki.

Krok 5. Pobierz i aktywuj wartości

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

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

W tym przykładzie wartości są pobierane z back-endu Remote Config (nie z pamięci podręcznej) i wywoływane przez 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);
    }
}];

Zaktualizowane wartości parametrów wpływają na działanie i wygląd aplikacji, dlatego należy aktywować pobrane wartości w takim momencie, aby zapewnić użytkownikowi płynne działanie, np. gdy otworzy on aplikację po raz kolejny. Więcej informacji i przykładów 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ć funkcji Remote Config w czasie rzeczywistym, aby nasłuchuj aktualizacji z backendu Remote Config. Wydarzenia w czasie rzeczywistym Remote Config wysyła do połączonych urządzeń sygnały o dostępności aktualizacji. automatycznie pobierze zmiany po opublikowaniu nowego pliku Remote Config wersji.

Aktualizacje w czasie rzeczywistym są obsługiwane przez pakiet SDK Firebase dla platform Apple w wersji 10.7.0 i nowszych.

  1. W aplikacji wywołaj funkcję addOnConfigUpdateListener, aby zacząć nasłuchiwać aktualizacji i automatycznie pobierać nowe lub zaktualizowane wartości parametrów. Poniżej przykład nasłuchuje aktualizacji, a kiedy activateWithCompletionHandler jest 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 pobiera dane zbyt często w krótkim czasie, wywołania pobierania są ograniczane, a pakiet SDK zwraca wartość 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 pobierać ją częściej,aby odświeżyć pamięć podręczną bardzo często (wiele razy na godzinę), co pozwala na szybkie wprowadzanie poprawek w miarę rozwoju i przetestować aplikację. Aktualizacje Zdalnej konfiguracji w czasie rzeczywistym pomijają buforowanie, gdy konfiguracja na serwerze jest aktualizowana. 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 w przypadku Remote Config wynosi 12 godzin, co oznacza, że konfiguracje nie będą pobierane z back-endu częściej niż raz w ciągu 12 godzin, niezależnie od liczby wywołań funkcji pobierania. W szczególności minimalny interwał pobierania jest określany w tej kolejności:

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

Dalsze kroki

Jeśli jeszcze tego nie zrobisz, zapoznaj się z Remote Config przypadkami użycia i pojęciami kluczowymi oraz dokumentacją dotyczącą zaawansowanych strategii, w tym: