| Wybierz platformę: | iOS+ Android Web Flutter Unity C++ |
Za pomocą Firebase Remote Config możesz definiować parametry w aplikacji i aktualizować ich wartości w chmurze, co pozwala modyfikować wygląd i działanie aplikacji bez konieczności dystrybucji aktualizacji aplikacji.
Biblioteka Remote Config 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 mają być dostępne dla aplikacji. Więcej informacji znajdziesz w artykule Strategie ładowania Zdalnej konfiguracji.
Ten przewodnik zawiera instrukcje dotyczące rozpoczęcia pracy oraz przykładowy kod, który można sklonować lub pobrać z firebase/quickstart-unity repozytorium na GitHubie.
Krok 1. Dodaj Remote Config do aplikacji
Zanim zaczniesz korzystać z Remote Config, musisz:
zarejestrować projekt Unity i skonfigurować go do korzystania z Firebase.
Jeśli Twój projekt Unity korzysta już z Firebase, jest on już zarejestrowany i skonfigurowany do używania Firebase.
Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację.
Dodaj pakiet Firebase Unity SDK (w szczególności
FirebaseRemoteConfig.unitypackage) do projektu Unity.
Pamiętaj, że dodanie Firebase do projektu Unity wymaga wykonania zadań zarówno w Firebase konsoli Firebase, jak i w otwartym projekcie Unity (np. pobierasz pliki konfiguracyjne Firebase z konsoli, a następnie przenosisz je do projektu Unity).
Krok 2. Ustaw domyślne wartości parametrów w aplikacji
Możesz ustawić domyślne wartości parametrów w aplikacji w Remote Config obiekcie, aby aplikacja działała zgodnie z oczekiwaniami, zanim połączy się z Remote Config backendem, oraz aby wartości domyślne były dostępne, jeśli nie są ustawione w backendzie.
Aby to zrobić, utwórz słownik ciągów znaków i wypełnij go parami klucz-wartość reprezentującymi domyślne wartości, które chcesz dodać. Jeśli masz już skonfigurowane Remote Config wartości parametrów backendu, możesz pobrać plik, który zawiera te pary klucz-wartość i użyć go do utworzenia słownika ciągów znaków. Więcej informacji znajdziesz w artykule Pobieranie Remote Config domyślnych wartości szablonu.
(Właściwości inne niż ciągi znaków zostaną przekonwertowane na typ właściwości po wywołaniu funkcji SetDefaultsAsync().
System.Collections.Generic.Dictionary<string, object> defaults = new System.Collections.Generic.Dictionary<string, object>(); // These are the values that are used if we haven't fetched data from the // server // yet, or if we ask for values that the server doesn't have: defaults.Add("config_test_string", "default local string"); defaults.Add("config_test_int", 1); defaults.Add("config_test_float", 1.0); defaults.Add("config_test_bool", false); Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults) .ContinueWithOnMainThread(task => {
Krok 3. Uzyskaj wartości parametrów, które będą używane w Twojej aplikacji
Teraz możesz pobierać wartości parametrów z obiektu Remote Config. Jeśli ustawisz
wartości w backendzie Remote Config, pobierzesz je, a następnie aktywujesz,
będą one dostępne dla Twojej aplikacji. W przeciwnym razie uzyskasz wartości parametrów w aplikacji
skonfigurowane za pomocą
SetDefaultsAsync().
Aby uzyskać te wartości, użyj
GetValue(),
podając klucz parametru jako argument. Zwraca ona wartość
ConfigValue,
która ma właściwości umożliwiające przekonwertowanie wartości na różne typy podstawowe.
Krok 4. Ustaw wartości parametrów
W konsoli Firebase otwórz DevOps i zaangażowanie > Zdalna konfiguracja.
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 domyślną wartość w aplikacji) i wartości warunkowe. Więcej informacji znajdziesz w artykule Remote Config parametry i warunki.
Krok 5. Pobierz i aktywuj wartości (w razie potrzeby)
Aby pobrać wartości parametrów z backendu Remote Config, wywołaj metodę
FetchAsync(). Wszystkie wartości ustawione w backendzie są pobierane i zapisywane w pamięci podręcznej w obiekcie
Remote Config.
// Start a fetch request. // FetchAsync only fetches new data if the current data is older than the provided // timespan. Otherwise it assumes the data is "recent enough", and does nothing. // By default the timespan is 12 hours, and for production apps, this is a good // number. For this example though, it's set to a timespan of zero, so that // changes in the console will always show up immediately. public Task FetchDataAsync() { DebugLog("Fetching data..."); System.Threading.Tasks.Task fetchTask = Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync( TimeSpan.Zero); return fetchTask.ContinueWithOnMainThread(FetchComplete); }
W poprzednim kodzie FetchComplete to metoda, której sygnatura odpowiada
parametrom jednego z
przeciążeń
funkcji ContinueWithOnMainThread().
W poniższym przykładowym kodzie do metody FetchComplete przekazywane jest poprzednie zadanie (fetchTask), co pozwala metodzie FetchComplete określić, czy zostało ono zakończone. Kod używa
Info.LastFetchStatus
następnie, aby określić, czy zakończenie było również pomyślne. Jeśli tak,
Remote Config wartości parametrów są aktywowane za pomocą ActivateAsync().
private void FetchComplete(Task fetchTask) {
if (!fetchTask.IsCompleted) {
Debug.LogError("Retrieval hasn't finished.");
return;
}
var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
var info = remoteConfig.Info;
if(info.LastFetchStatus != LastFetchStatus.Success) {
Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
return;
}
// Fetch successful. Parameter values must be activated to use.
remoteConfig.ActivateAsync()
.ContinueWithOnMainThread(
task => {
Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
});
}
Wartości pobrane za pomocą
FetchAsync()
są zapisywane w pamięci podręcznej lokalnie po zakończeniu pobierania, ale nie są udostępniane, dopóki nie zostanie wywołana funkcja
ActivateAsync(). Dzięki temu możesz mieć pewność, że nowe wartości nie zostaną zastosowane w trakcie obliczeń ani w innych momentach, które mogą powodować problemy lub dziwne zachowanie.
Krok 6. Nasłuchuj aktualizacji w czasie rzeczywistym
Po pobraniu wartości parametrów możesz użyć Zdalnej konfiguracji w czasie rzeczywistym, aby nasłuchiwać aktualizacji z backendu Zdalnej konfiguracji.Remote ConfigRemote Config Zdalna konfiguracja w czasie rzeczywistym Remote Config informuje połączone urządzenia o dostępności aktualizacji i automatycznie pobiera zmiany po opublikowaniu nowej Remote Config wersji.
Aktualizacje w czasie rzeczywistym są obsługiwane przez pakiet Firebase Unity SDK w wersji 11.0.0 lub nowszej na platformach Android i Apple.
- W aplikacji dodaj element
OnConfigUpdateListener, aby rozpocząć nasłuchiwanie aktualizacji i automatycznie pobierać nowe lub zaktualizowane wartości parametrów. Następnie utwórz elementConfigUpdateListenerEventHandler, aby przetwarzać zdarzenia aktualizacji. Poniższy przykład nasłuchuje aktualizacji i używa nowo pobranych wartości do wyświetlania zaktualizowanej wiadomości powitalnej.
// Invoke the listener. void Start() { Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener += ConfigUpdateListenerEventHandler; } // Handle real-time Remote Config events. void ConfigUpdateListenerEventHandler( object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) { if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) { Debug.Log(String.Format("Error occurred while listening: {0}", args.Error)); return; } Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys)); // Activate all fetched values and then display a welcome message. remoteConfig.ActivateAsync().ContinueWithOnMainThread( task => { DisplayWelcomeMessage(); }); } // Stop the listener. void OnDestroy() { Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener -= ConfigUpdateListenerEventHandler; }
Gdy następnym razem opublikujesz nową wersję Remote Config, urządzenia, które działają na Twojej aplikacji i nasłuchują zmian, wywołają procedurę obsługi zakończenia.