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
Jeśli jeszcze tego nie zrobisz, dodaj Firebase do swojego projektu Apple.
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.
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 tworzenia zalecamy ustawienie stosunkowo niskiego minimalnego interwału pobierania. Więcej informacji znajdziesz w sekcji Ograniczanie.
Krok 2. Ustaw w aplikacji domyślne wartości parametrów
Wartości domyślne parametrów w aplikacji możesz ustawić w obiekcie Remote Config, aby aplikacja działała zgodnie z oczekiwaniami, zanim połączy się z serwerem Remote Config, oraz aby były dostępne wartości domyślne, jeśli na serwerze nie ma żadnych ustawionych wartości.
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
, 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
Na karcie Parametry otwórz Menu i wybierz Pobierz wartości domyślne.
Gdy pojawi się taka prośba, włącz plik.plist na iOS, a potem kliknij Pobierz plik.
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, 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 Configinterfejsów API backendu możesz tworzyć nowe domyślne wartości backendu, które zastąpią wartości w aplikacji zgodnie z wybraną przez Ciebie logiką warunkową lub kierowaniem na użytkowników. W tej sekcji znajdziesz instrukcje tworzenia tych wartości w konsoli Firebase.
- W konsoli Firebase otwórz projekt.
- Aby wyświetlić panel Remote Config, w menu kliknij Remote Config.
- Zdefiniuj parametry o tych samych nazwach co parametry zdefiniowane w aplikacji. Dla każdego parametru możesz ustawić wartość domyślną (która ostatecznie zastąpi wartość domyślną w aplikacji), a także 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 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 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ć 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.
W aplikacji wywołaj funkcję
addOnConfigUpdateListener
, aby zacząć nasłuchiwać aktualizacji i automatycznie pobierać nowe lub zaktualizowane wartości parametrów. Ten przykład wykrywa zmiany i po wywołaniu funkcjiactivateWithCompletionHandler
używa nowo pobranych wartości do wyświetlenia zaktualizowanego komunikatu powitalnego.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]; }); }]; } }];
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 możesz częściej pobierać dane, aby odświeżać pamięć podręczną (wiele razy na godzinę), co pozwoli Ci szybko iterować podczas tworzenia i testowania aplikacji. Aktualizacje konfiguracji zdalnej w czasie rzeczywistym automatycznie pomijają pamięć podręczną, gdy konfiguracja zostanie zaktualizowana 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 w przypadku 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ń funkcji pobierania. W szczególności minimalny interwał pobierania jest określany w tej kolejności:
- Parametr w pliku
fetch(long)
- Parametr w pliku
FIRRemoteConfigSettings.MinimumFetchInterval
- 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: