| Выберите платформу: | iOS+ Android Веб Flutter Unity C++ |
Вы можете использовать Firebase Remote Config, чтобы задавать параметры в приложении и обновлять их значения в облаке. Это позволяет изменять внешний вид и поведение приложения без выпуска обновлений.
Библиотека Remote Config используется для хранения значений параметров по умолчанию в приложении, получения обновленных значений параметров из серверной части Remote Config и управления тем, когда полученные значения становятся доступны приложению. Подробнее о стратегиях загрузки Remote Config…
В этом руководстве описаны первые шаги по работе с Firebase и приведены примеры кода, которые можно клонировать или скачать из репозитория GitHub firebase/quickstart-unity.
Шаг 1. Добавьте Remote Config в приложение
Чтобы использовать Remote Config, вам необходимо:
Зарегистрируйте проект Unity и настройте его для использования Firebase.
Если в проекте уже используется Firebase, можете пропустить этот шаг.
Если у вас нет проекта Unity, вы можете скачать пример приложения.
Добавьте в свой проект Unity Firebase Unity SDK (в частности,
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, устройства, на которых запущено ваше приложение и которые отслеживают изменения, вызовут обработчик завершения.