| 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 rozpowszechniania 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 i kontrolowania, kiedy pobrane wartości są udostępniane aplikacji. Więcej informacji znajdziesz w artykule o strategiach wczytywania Zdalnej konfiguracji.
W tym przewodniku znajdziesz instrukcje, które pomogą Ci rozpocząć pracę, oraz przykładowy kod, który możesz sklonować lub pobrać z repozytorium firebase/quickstart-unity na GitHubie.
Krok 1. Dodaj Remote Config do aplikacji
Zanim zaczniesz korzystać z Remote Config, musisz:
Zarejestruj projekt Unity i skonfiguruj go tak, aby używał Firebase.
Jeśli Twój projekt Unity korzysta już z Firebase, jest już zarejestrowany i skonfigurowany pod kątem Firebase.
Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację.
Dodaj do projektu Unity pakiet SDK Firebase Unity (a konkretnie
FirebaseRemoteConfig.unitypackage).
Pamiętaj, że dodanie Firebase do projektu Unity wymaga wykonania zadań zarówno w konsoli Firebase, jak i w otwartym projekcie Unity (np. pobierasz pliki konfiguracji 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 obiekcie Remote Config, aby aplikacja działała zgodnie z oczekiwaniami, zanim połączy się z backendem Remote Config, i aby wartości domyślne były dostępne, jeśli nie zostały ustawione w backendzie.
Aby to zrobić, utwórz słownik ciągów znaków i wypełnij go parami klucz-wartość reprezentującymi wartości domyślne, które chcesz dodać. Jeśli masz już skonfigurowane wartości parametrów backendu Remote Config, możesz pobrać plik zawierający te pary klucz-wartość i użyć go do utworzenia słownika ciągów znaków. Więcej informacji znajdziesz w artykule Pobieranie domyślnych ustawień szablonu Remote Config.
(Właściwości, które nie są ciągami znaków, zostaną przekonwertowane na typ właściwości po wywołaniu 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 otrzymasz wartości parametrów w aplikacji skonfigurowane za pomocą SetDefaultsAsync().
Aby uzyskać te wartości, użyj metody GetValue(), podając klucz parametru jako argument. Zwraca on obiekt ConfigValue, który ma właściwości umożliwiające konwersję wartości na różne typy podstawowe.
Krok 4. Ustaw wartości parametrów
W konsoli Firebase kliknij 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 wartość domyślną w aplikacji) i wartości warunkowe. Więcej informacji znajdziesz w artykule Parametry i warunki Remote Config.
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 pasuje do parametrów jednego z przeciążeń metody 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, aby określić, czy zakończenie również się powiodło. Jeśli tak, wartości parametrów Remote Config 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ą metody FetchAsync() są po zakończeniu pobierania przechowywane w pamięci podręcznej lokalnie, ale są udostępniane dopiero po wywołaniu metody ActivateAsync(). Dzięki temu nowe wartości nie zostaną zastosowane w trakcie obliczeń ani w innych momentach, które mogłyby spowodować problemy lub nieprawidłowe działanie.
Krok 6. Słuchaj aktualizacji w czasie rzeczywistym
Po pobraniu wartości parametrów możesz używać Remote Config w czasie rzeczywistym, aby nasłuchiwać aktualizacji z backendu Remote Config. Remote Config wysyła sygnały do połączonych urządzeń w czasie rzeczywistym, gdy dostępne są aktualizacje, i automatycznie pobiera zmiany po opublikowaniu nowej wersji Remote Config.
Aktualizacje w czasie rzeczywistym są obsługiwane przez pakiet SDK Firebase Unity w wersji 11.0.0 lub nowszej na platformach Android i Apple.
- W aplikacji dodaj
OnConfigUpdateListener, aby zacząć nasłuchiwać aktualizacji i automatycznie pobierać nowe lub zaktualizowane wartości parametrów. Następnie utwórzConfigUpdateListenerEventHandler, aby przetwarzać zdarzenia aktualizacji. W poniższym przykładzie nasłuchiwane są aktualizacje, a nowo pobrane wartości są używane 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, na których działa Twoja aplikacja i które nasłuchują zmian, wywołają moduł obsługi zakończenia.