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, jest już zarejestrowany i skonfigurowany pod kątem tej usługi.

    • 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 w aplikacji domyślne wartości parametrów

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 te pary klucz-wartość i użyć go do utworzenia słownika ciągów znaków. Więcej informacji znajdziesz w szablonie do pobraniaRemote Config z domyślnymi ustawieniami.

(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, które będą używane 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 tych samych nazwach, co 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 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 jej określić, czy zostało ukończone.FetchComplete Kod używa zmiennej Info.LastFetchStatus, aby określić, czy zakończenie było także skuteczne. 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: