| Выберите платформу: | iOS+ Android Веб Flutter Unity C++ |
С помощью Firebase Remote Config можно задавать параметры в приложении и обновлять их значения в облаке, чтобы менять внешний вид и поведение приложения без выпуска обновлений.
Библиотека Remote Config используется для хранения значений параметров по умолчанию, получения обновленных значений параметров из серверной части Remote Config и управления тем, когда полученные значения становятся доступными для вашего приложения. Подробнее о стратегиях загрузки Remote Config…
В этом руководстве описаны первые шаги и приведены примеры кода, которые можно клонировать или скачать из репозитория GitHub firebase/quickstart-unity.
Шаг 1. Добавьте Remote Config в приложение
Чтобы использовать Remote Config, необходимо:
Зарегистрируйте проект Unity и настройте его для использования Firebase.
Если в проекте уже используется Firebase, можете пропустить этот шаг.
Если у вас нет проекта Unity, вы можете скачать пример приложения.
Добавьте в свой проект Unity Unity SDK для Firebase (в частности,
FirebaseRemoteConfig.unitypackage).
Обратите внимание, что для добавления Firebase в проект Unity нужно выполнить действия как в консоли Firebase, так и в вашем открытом проекте Unity. Например, вам потребуется скачать файлы конфигурации Firebase из консоли, а затем переместить их в проект Unity.
Шаг 2. Задайте значения параметров по умолчанию в приложении
Вы можете задать значения параметров по умолчанию в объекте Remote Config, чтобы приложение работало правильно до подключения к серверу Remote Config и чтобы значения по умолчанию были доступны, если они не заданы на сервере.
Для этого создайте словарь строк и заполните его парами "ключ-значение", представляющими значения по умолчанию, которые вы хотите добавить. Если вы уже настроили значения параметров серверной части (Remote Config), то можете скачать файл, содержащий эти пары "ключ-значение", и использовать его для создания словаря строк. Подробнее о том, как скачать шаблоны по умолчанию для Remote Config…
При вызове 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 => {
Шаг 3. Получите значения параметров, которые будут использоваться в приложении
Теперь вы можете получать значения параметров из объекта Remote Config. Если вы задали значения в серверном коде Remote Config, получили и активировали их, то они будут доступны в приложении. В противном случае вы получите значения параметров, настроенные в приложении с помощью SetDefaultsAsync().
Чтобы получить эти значения, используйте GetValue(), указав ключ параметра в качестве аргумента. Возвращает объект ConfigValue, у которого есть свойства для преобразования значения в различные базовые типы.
Шаг 4. Задайте значения параметров
В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > Remote Config (Удаленная конфигурация).
Задайте параметры с теми же названиями, что и в приложении. Для каждого параметра можно указать значение по умолчанию (которое переопределит значение по умолчанию в приложении) и условные значения. Подробнее о параметрах и условиях Remote Config…
Шаг 5. Получите и активируйте значения (при необходимости)
Чтобы получить значения параметров из серверной части Remote Config, вызовите метод FetchAsync(). Все значения, заданные в серверной части, извлекаются и кешируются в объекте 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); }
В предыдущем коде FetchComplete – это метод, сигнатура которого соответствует параметрам одной из перегрузок ContinueWithOnMainThread().
В приведенном ниже образце кода методу FetchComplete передается предыдущая задача (fetchTask), что позволяет FetchComplete определить, завершена ли она. Затем код использует Info.LastFetchStatus, чтобы определить, было ли завершение также успешным. Если да, то значения параметров Remote Config активируются с помощью 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}.");
});
}
Значения, полученные с помощью FetchAsync(), кешируются локально, но становятся доступны только после вызова ActivateAsync(). Это позволяет избежать применения новых значений в середине вычислений или в другие моменты, когда это может вызвать проблемы или странное поведение.
Шаг 6. Прослушивайте обновления в реальном времени
После получения значений параметров вы можете использовать Remote Config в реальном времени, чтобы отслеживать обновления из серверной части Remote Config. Remote Config в реальном времени сообщает подключенным устройствам о доступности обновлений и автоматически получает изменения после публикации новой версии Remote Config.
Обновления в реальном времени поддерживаются в Firebase Unity SDK версии 11.0.0 и выше для платформ Android и Apple.
- Добавьте в приложение
OnConfigUpdateListener, чтобы начать отслеживать обновления и автоматически получать новые или измененные значения параметров. Затем создайтеConfigUpdateListenerEventHandlerдля обработки событий обновления. В примере ниже показано, как прослушивать обновления и использовать новые значения для показа обновленного приветственного сообщения.
// 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; }
При следующей публикации новой версии Remote Config устройства, на которых запущено ваше приложение и которые отслеживают изменения, вызовут обработчик завершения.