Pierwsze kroki ze Zdalnej konfiguracji Firebase


Za pomocą Firebase Remote Config możesz definiować parametry w aplikacji i zmieniać ich wartości w chmurze, co umożliwia modyfikowanie wyglądu i zachowania aplikacji bez 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 oraz kontrolowania, kiedy pobrane wartości są udostępniane aplikacji. Więcej informacji znajdziesz w artykule Strategie ładowania Zdalnej konfiguracji.

W tym przewodniku znajdziesz instrukcje rozpoczęcia pracy oraz przykładowy kod, który możesz skopiować 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 używał 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 Unity, możesz pobrać próbną aplikację.

  • Dodaj pakiet SDK Firebase Unity (szczególnie plik 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. pobieranie plików konfiguracji Firebase z konsoli i przenoszenie ich do projektu Unity).

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

Wartości domyślne parametrów w aplikacji możesz ustawić w obiekcie Remote Config, aby aplikacja działała zgodnie z oczekiwaniami, zanim połączy się z serwerem Remote Config, oraz aby były dostępne wartości domyślne, jeśli na serwerze nie ma żadnych ustawionych wartości.

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 wartości parametrów Remote Config backendu, możesz pobrać plik zawierający pary klucz-wartość i użyć go do utworzenia słownika ciągów znaków. Więcej informacji znajdziesz w artykule o pobieraniu wartości domyślnych szablonu Remote Config.

(właściwości inne niż tekstowe zostaną przekonwertowane na typ właściwości podczas wywołania 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 Remote Config. Jeśli ustawisz wartości w backendzie Remote Config, pobierzesz je, a następnie je aktywujesz, będą one dostępne w aplikacji. W przeciwnym razie otrzymasz wartości parametrów w aplikacji skonfigurowane za pomocą SetDefaultsAsync().

Aby uzyskać te wartości, użyj funkcji GetValue(), podając jako argument klucz parametru. Zwraca to 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

  1. W konsoli Firebase otwórz projekt.
  2. Aby wyświetlić panel Remote Config, w menu kliknij Remote Config.
  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 parametrach i warunkach Remote Config.

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

Aby pobrać wartości parametrów z back-endu Remote Config, wywołaj metodę FetchAsync(). Wszystkie wartości ustawione na zapleczu są pobierane i przechowywane 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 powyższym kodzie FetchComplete to metoda, której podpis jest zgodny z parametrami jednej z przeciążeń funkcji ContinueWithOnMainThread().

W przykładowym kodzie poniżej metoda FetchComplete otrzymuje poprzednie zadanie (fetchTask), co pozwala metodzie FetchComplete określić, czy zadanie zostało ukończone. Kod używa zmiennej Info.LastFetchStatus, aby określić, czy zakończenie było także udane. Jeśli tak, wartości parametru Remote Config są aktywowane za pomocą parametru 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ą przechowywane lokalnie w pamięci podręcznej po zakończeniu pobierania, ale nie są dostępne, dopóki nie zostanie wywołana funkcja ActivateAsync(). Dzięki temu nowe wartości nie zostaną zastosowane w trakcie obliczeń ani w innych momentach, które mogłyby spowodować problemy lub dziwne działanie.

Krok 6. Słuchaj aktualizacji w czasie rzeczywistym

Po pobraniu wartości parametrów możesz używać interfejsu Remote Config w czasie rzeczywistym do odbierania aktualizacji z back-endu Remote Config. W czasie rzeczywistym Remote Config sygnalizuje połączonym urządzeniom, że są dostępne 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.

  1. W aplikacji dodaj element 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. Ten przykład wykrywa zmiany i używa nowo pobranych wartości do wyświetlenia zaktualizowanego komunikatu powitalnego.
// 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ą metodę obsługi zakończenia.

Dalsze kroki

Jeśli jeszcze tego nie zrobisz, zapoznaj się z Remote Config przypadkami użycia i pojęciami kluczowymi oraz dokumentacją dotyczącą zaawansowanych strategii, w tym: