| Wybierz platformę: | iOS+ Android Web Flutter Unity C++ |
Możesz użyć Firebase Remote Config, aby zdefiniować parametry w aplikacji i aktualizować ich wartości w chmurze, co pozwoli Ci modyfikować wygląd i działanie aplikacji bez konieczności rozpowszechniania jej aktualizacji.
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 GitHub firebase/quickstart-unity.
Krok 1. Dodaj Remote Config do aplikacji
Zanim zaczniesz korzystać z Remote Config, musisz:
Zarejestruj projekt Unity i skonfiguruj go tak, aby korzystał z 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. musisz pobrać pliki konfiguracji Firebase z konsoli, a następnie przenieść 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, oraz 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 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 o parametrach i warunkach 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ą FetchAsync() są po zakończeniu pobierania zapisywane w lokalnej pamięci podręcznej, ale są udostępniane dopiero po wywołaniu ActivateAsync(). Dzięki temu nowe wartości nie zostaną zastosowane w trakcie obliczeń ani w innych momentach, w których mogłoby to 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 w czasie rzeczywistym sygnały do połączonych urządzeń, 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.
- Dodaj w aplikacji
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.