Wprowadzenie do Zdalnej konfiguracji Firebase


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

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 oraz kontrolowania, kiedy pobrane wartości mają być udostępniane aplikacji. Więcej informacji znajdziesz w artykule o strategiach wczytywania Zdalnej konfiguracji.

Ten przewodnik przedstawia krok po kroku, jak zacząć korzystać z usługi, i zawiera przykładowy kod, który możesz skopiować lub pobrać z repozytorium GitHub firebase/quickstart-unity.

Krok 1. Dodaj Zdalną konfigurację do aplikacji

Zanim użyjesz Zdalnej konfiguracji, musisz:

  • Zarejestruj projekt w Unity i skonfiguruj go do korzystania z Firebase.

    • Jeśli Twój projekt Unity korzysta już z Firebase, jest już zarejestrowany i skonfigurowany dla Firebase.

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

  • Dodaj do projektu Unity pakiet SDK Firebase Unity (a w szczególności FirebaseRemoteConfig.unitypackage).

Pamiętaj, że dodanie Firebase do projektu Unity obejmuje zadania wykonywane zarówno w konsoli Firebase, jak i w otwartym projekcie Unity (np. pobierasz z konsoli pliki konfiguracyjne Firebase, a następnie przenosisz je do projektu Unity).

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

Domyślne wartości parametrów w aplikacji możesz ustawić w obiekcie Zdalnej konfiguracji, aby aplikacja zachowywała się zgodnie z oczekiwaniami przed nawiązaniem połączenia z backendem Zdalnej konfiguracji. Jeśli w backendzie nie ma ustawionych żadnych wartości domyślnych, będą dostępne wartości domyślne.

W tym celu utwórz słownik 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 szablonu Zdalnej konfiguracji.

Właściwości inne niż ciągi zostaną przekonwertowane na typ usługi 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, pobierze je i aktywujesz, będą one dostępne dla Twojej aplikacji. W przeciwnym razie wartości parametrów w aplikacji zostaną skonfigurowane za pomocą SetDefaultsAsync().

Aby uzyskać te wartości, użyj funkcji GetValue(), podając klucz parametru jako argument. Zwraca wartość ConfigValue, która ma właściwości umożliwiające konwersję wartości na różne typy podstawowe.

Krok 4. Ustaw wartości parametrów

  1. Otwórz projekt w konsoli Firebase.
  2. Wybierz z menu Zdalna konfiguracja, aby wyświetlić panel Zdalnej konfiguracji.
  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 o parametrach i warunkach 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 zapisywane w pamięci podręcznej obiektu 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 to metoda, której podpis pasuje do parametrów jednego z przeciążeń obiektu ContinueWithOnMainThread().

W przykładowym kodzie poniżej metoda FetchComplete przekazuje poprzednie zadanie (fetchTask), dzięki czemu FetchComplete może określić, czy zakończyła swoje zadanie. Do określenia, czy zakończenie przebiegło również, kod używa parametru Info.LastFetchStatus. Jeśli tak, wartości parametrów Zdalnej konfiguracji są aktywowane za pomocą funkcji 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ą funkcji FetchAsync() są zapisywane lokalnie w pamięci podręcznej po zakończeniu pobierania, ale nie są udostępniane, dopóki nie zostanie wywołane wywołanie ActivateAsync(). Dzięki temu masz pewność, że nowe wartości nie będą stosowane w trakcie obliczeń lub 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 za pomocą Zdalnej konfiguracji w czasie rzeczywistym nasłuchiwać aktualizacji z backendu Zdalnej konfiguracji. Zdalna konfiguracja w czasie rzeczywistym sygnalizuje połączone urządzenia, gdy dostępne są aktualizacje, 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. Dodaj w aplikacji OnConfigUpdateListener, aby zacząć nasłuchiwać aktualizacji i automatycznie pobierać nowe lub zaktualizowane wartości parametrów. Następnie utwórz ConfigUpdateListenerEventHandler, aby przetwarzać zdarzenia aktualizacji. Poniższy przykład wykrywa aktualizacje i używa nowo pobranych 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 ukończenia.

Dalsze kroki

Zapoznaj się z przypadkami użycia Zdalnej konfiguracji oraz dokumentacją kluczowych pojęć i zaawansowanych strategii, takich jak: