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 gdy pobrane wartości są udostępniane aplikacji. Aby dowiedzieć się więcej, zobacz Strategie wczytywania Zdalnej konfiguracji.

Z tego przewodnika dowiesz się, Google Analytics i udostępniamy w nich przykładowy kod, dostępnych do sklonowania lub pobrania z firebase/quickstart-unity z repozytorium GitHub.

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 w Unity wymaga wykonania zadań zarówno w konsoli Firebase, jak i w otwartym projekcie w Unity (np. pobieranie plików konfiguracji Firebase z konsoli i przenoszenie ich do projektu w Unity).

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

Domyślne wartości parametrów w aplikacji możesz ustawić w Remote Config dzięki czemu aplikacja działa zgodnie z oczekiwaniami jeszcze przed nawiązaniem połączenia Remote Config dzięki temu, że w razie braku wartości domyślne są dostępne ustawionym w backendzie.

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: Pobierz Domyślne ustawienia 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. Powoduje to zwrócenie ConfigValue który ma właściwości do konwertowania wartości na różne typy bazowe.

Krok 4. Ustaw wartości parametrów

  1. Otwórz projekt w konsoli Firebase.
  2. Wybierz w menu Remote Config, aby wyświetlić panel Remote Config.
  3. Zdefiniuj parametry o takich samych nazwach jak parametry zdefiniowane w sekcji do aplikacji. Dla każdego parametru możesz ustawić wartość domyślną (która będzie zastąpią domyślną wartość w aplikacji) i wartości warunkowe. Więcej informacji znajdziesz w sekcji Parametry i warunki 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 jest metodą, której podpis pasuje do metody jednego z parametrów przeciążenia z ContinueWithOnMainThread().

W przykładowym kodzie poniżej metoda FetchComplete otrzymuje poprzednie zadanie (fetchTask), co pozwala jej określić, czy zostało ukończone. W kodzie Info.LastFetchStatus aby potem ustalić, czy teraz zakończył się powodzeniem. Jeśli tak, Wartości parametru Remote Config są następnie 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 w pamięci podręcznej lokalnie 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ć funkcji Remote Config w czasie rzeczywistym, aby nasłuchuj aktualizacji z backendu Remote Config. Wydarzenia w czasie rzeczywistym Remote Config wysyła do połączonych urządzeń sygnały o dostępności aktualizacji. automatycznie pobierze zmiany po opublikowaniu nowego pliku Remote Config wersji.

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. Dodaj w aplikacji OnConfigUpdateListener, aby zacząć nasłuchiwać aktualizacji oraz automatycznie pobierać nowe lub zaktualizowane wartości parametrów. Następnie utwórz ConfigUpdateListenerEventHandler, aby przetworzyć zdarzenia aktualizacji. Ten przykład nasłuchuje aktualizacji i używa nowo pobranych wartości do wyświetlania 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: