Wprowadzenie do Zdalnej konfiguracji Firebase


Za pomocą Zdalnej konfiguracji Firebase możesz definiować parametry w aplikacji i aktualizować ich wartości w chmurze. Pozwala to zmieniać wygląd i działanie aplikacji bez jej aktualizowania.

Biblioteka Zdalnej konfiguracji służy do przechowywania domyślnych wartości parametrów w aplikacji, pobierania zaktualizowanych wartości parametrów z backendu Zdalnej konfiguracji i kontrolowania, kiedy pobrane wartości mają być udostępniane aplikacji. Więcej informacji znajdziesz w artykule na temat strategii wczytywania Zdalnej konfiguracji.

Ten przewodnik zawiera omówienie pierwszych kroków oraz przykładowy kod, który możesz sklonować lub pobrać z repozytorium GitHub firebase/quickstart-unity.

Krok 1. Dodaj Zdalną konfigurację do swojej aplikacji

Zanim użyjesz Zdalnej konfiguracji, musisz:

  • Zarejestruj projekt Unity i skonfiguruj go pod kątem korzystania z Firebase.

    • Jeśli Twój projekt w Unity korzysta już z Firebase, oznacza to, że został zarejestrowany i skonfigurowany pod kątem Firebase.

    • Jeśli nie masz projektu w Unity, możesz pobrać przykładową aplikację.

  • Dodaj pakiet SDK Firebase Unity (a konkretnie FirebaseRemoteConfig.unitypackage) do projektu Unity.

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ć z konsoli pliki konfiguracyjne Firebase, a następnie przenieść je do projektu Unity).

Krok 2. Ustaw domyślne wartości parametrów w aplikacji

W obiekcie Zdalnej konfiguracji możesz ustawić domyślne wartości parametrów aplikacji, dzięki czemu aplikacja będzie działać zgodnie z oczekiwaniami przed nawiązaniem połączenia z backendem Zdalnej konfiguracji, a jeśli w backendzie nie zostaną ustawione żadne wartości domyślne, będą one dostępne.

Aby to zrobić, utwórz słownik w postaci ciągu 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 Zdalnej konfiguracji, możesz pobrać plik zawierający te pary klucz/wartość i użyć go do utworzenia słownika ciągu znaków. Więcej informacji znajdziesz w artykule o pobieraniu wartości domyślnych szablonów Zdalnej konfiguracji.

(Właściwości niebędące ciągami 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. Pobierz wartości parametrów do wykorzystania w aplikacji

Teraz możesz pobierać wartości parametrów z obiektu Zdalnej konfiguracji. Jeśli ustawisz wartości w backendzie Zdalnej konfiguracji, pobierzesz je i aktywujesz, będą one dostępne dla Twojej aplikacji. W przeciwnym razie Twoje wartości parametrów w aplikacji zostaną skonfigurowane za pomocą parametru SetDefaultsAsync().

Aby uzyskać te wartości, użyj funkcji GetValue(), podając klucz parametru jako argument. Zwracany jest obiekt ConfigValue, który zawiera właściwości do konwertowania wartości na różne typy bazowe.

Krok 4. Ustaw wartości parametrów

  1. W konsoli Firebase otwórz projekt.
  2. Aby wyświetlić panel Zdalnej konfiguracji, wybierz z menu Zdalna konfiguracja.
  3. 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 Parametry i warunki Zdalnej konfiguracji.

Krok 5. Pobierz i aktywuj wartości (w razie potrzeby)

Aby pobrać wartości parametrów z backendu Zdalnej konfiguracji, wywołaj metodę FetchAsync(). Wszystkie wartości ustawione w backendzie są pobierane i buforowane w obiekcie Zdalnej konfiguracji.

// 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 powyższym kodzie FetchComplete jest metodą, której podpis pasuje do parametrów jednego z przeciążeń ContinueWithOnMainThread().

W przykładowym kodzie poniżej metoda FetchComplete jest przekazywana do poprzedniego zadania (fetchTask), co pozwala funkcji FetchComplete określić, czy została ukończona. Kod za pomocą parametru Info.LastFetchStatus określa, czy ukończono również. Jeśli tak, wartości parametrów Zdalnej konfiguracji 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ą parametru FetchAsync() są przechowywane lokalnie w pamięci podręcznej po zakończeniu pobierania, ale nie są udostępniane do czasu wywołania funkcji ActivateAsync(). Dzięki temu nowe wartości nie będą stosowane w trakcie obliczeń czy w innych sytuacjach, które mogą powodować problemy lub dziwne działanie.

Krok 6. Nasłuchuj aktualizacji w czasie rzeczywistym

Po pobraniu wartości parametrów możesz używać Zdalnej konfiguracji w czasie rzeczywistym do nasłuchiwania aktualizacji z backendu Zdalnej konfiguracji. Zdalna konfiguracja wysyła do połączonych urządzeń sygnały w czasie rzeczywistym o dostępności aktualizacji i automatycznie pobiera zmiany po opublikowaniu nowej wersji Zdalnej konfiguracji.

Aktualizacje w czasie rzeczywistym są obsługiwane przez pakiet SDK Firebase Unity w wersji 11.0.0 lub nowszej na platformy Android i Apple.

  1. W aplikacji dodaj OnConfigUpdateListener, aby zacząć nasłuchiwać aktualizacji i automatycznie pobierać nowe lub zaktualizowane wartości parametrów. Następnie utwórz ConfigUpdateListenerEventHandler do przetwarzania zdarzeń aktualizacji. Poniższy przykład nasłuchuje aktualizacji i wykorzystuje nowo pobrane wartości do wyświetlenia 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ę Zdalnej konfiguracji, urządzenia, na których działa Twoja aplikacja i nasłuchują zmian, wywołają moduł obsługi uzupełniania.

Dalsze kroki

Zapoznaj się z przypadkami użycia Zdalnej konfiguracji i zapoznaniem się z niektórymi kluczowymi pojęciami i dokumentacją zaawansowanych strategii, w tym: