Вы можете использовать Firebase Remote Config для определения параметров в вашем приложении и обновления их значений в облаке, что позволяет вам изменять внешний вид и поведение вашего приложения без распространения обновления приложения.
Библиотека Remote Config используется для хранения значений параметров по умолчанию в приложении, получения обновленных значений параметров из серверной части Remote Config и управления тем, когда полученные значения становятся доступными для вашего приложения. Дополнительные сведения см. в разделе Стратегии загрузки Remote Config .
В этом руководстве рассказывается, как начать работу, и приводятся примеры кода, которые можно клонировать или загрузить из репозитория Firebase/quickstart-unity на GitHub.
Шаг 1. Добавьте Remote Config в свое приложение.
Прежде чем вы сможете использовать Remote Config , вам необходимо:
Зарегистрируйте свой проект Unity и настройте его для использования Firebase.
Если ваш проект Unity уже использует Firebase, значит, он уже зарегистрирован и настроен для Firebase.
Если у вас нет проекта Unity, вы можете скачать образец приложения .
Добавьте Firebase Unity SDK (в частности,
FirebaseRemoteConfig.unitypackage
) в свой проект Unity.
Обратите внимание, что добавление 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 откройте свой проект.
- Выберите Remote Config в меню, чтобы просмотреть панель мониторинга 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 v11.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 , устройства, на которых работает ваше приложение и прослушивают изменения, вызовут обработчик завершения.
Следующие шаги
Если вы еще этого не сделали, изучите варианты использования Remote Config и ознакомьтесь с некоторыми ключевыми концепциями и документацией по расширенным стратегиям, в том числе: