Вы можете использовать Firebase Remote Config для определения параметров в вашем приложении и обновления их значений в облаке, что позволяет вам изменять внешний вид и поведение вашего приложения без распространения обновления приложения. В этом руководстве описаны шаги, необходимые для начала работы, и представлен пример кода, который можно клонировать или загрузить из репозитория Firebase/quickstart-ios на GitHub.
Шаг 1. Добавьте Remote Config в свое приложение.
Если вы еще этого не сделали, добавьте Firebase в свой проект Apple .
Для Remote Config Google Analytics необходим для условного таргетинга экземпляров приложения на свойства и аудитории пользователей. Убедитесь, что вы включили Google Analytics в своем проекте.
Создайте одноэлементный объект Remote Config , как показано в следующем примере:
Быстрый
remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 0 remoteConfig.configSettings = settings
Цель-C
self.remoteConfig = [FIRRemoteConfig remoteConfig]; FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init]; remoteConfigSettings.minimumFetchInterval = 0; self.remoteConfig.configSettings = remoteConfigSettings;
Этот объект используется для хранения значений параметров по умолчанию в приложении, получения обновленных значений параметров из серверной части Remote Config и управления тем, когда полученные значения становятся доступными для вашего приложения.
Во время разработки рекомендуется установить относительно небольшой минимальный интервал выборки. Дополнительную информацию см. в разделе Регулирование .
Шаг 2. Установите значения параметров по умолчанию в приложении.
Вы можете установить значения параметров по умолчанию в приложении в объекте Remote Config , чтобы ваше приложение вело себя должным образом до подключения к серверной части Remote Config , а также чтобы значения по умолчанию были доступны, если ни один из них не установлен в серверной части.
Определите набор имен параметров и значения параметров по умолчанию, используя объект
NSDictionary
или файл plist .Если вы уже настроили значения параметров серверной части Remote Config , вы можете загрузить сгенерированный файл
plist
, который включает все значения по умолчанию, и сохранить его в своем проекте Xcode.ОТДЫХ
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=PLIST -o RemoteConfigDefaults.plist
Консоль Firebase
На вкладке «Параметры » откройте меню и выберите «Загрузить значения по умолчанию» .
При появлении запроса включите .plist для iOS , затем нажмите «Загрузить файл» .
Добавьте эти значения в объект Remote Config используя
setDefaults:
. В следующем примере устанавливаются значения по умолчанию для приложения из файла plist:Быстрый
remoteConfig.setDefaults(fromPlist: "RemoteConfigDefaults")
Цель-C
[self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
Шаг 3. Получите значения параметров для использования в вашем приложении.
Теперь вы можете получать значения параметров из объекта Remote Config . Если позже вы установите значения в серверной части Remote Config , получите их, а затем активируете, эти значения будут доступны вашему приложению. В противном случае вы получите значения параметров в приложении, настроенные с помощью setDefaults:
. Чтобы получить эти значения, вызовите метод configValueForKey:
указав ключ параметра в качестве аргумента.
Шаг 4: Установите значения параметров
Используя консоль Firebase или серверные API Remote Config , вы можете создавать новые значения по умолчанию для серверной части, которые переопределяют значения в приложении в соответствии с желаемой условной логикой или таргетингом на пользователя. В этом разделе вы узнаете, как создать эти значения в консоли Firebase .
- В консоли Firebase откройте свой проект.
- Выберите Remote Config в меню, чтобы просмотреть панель мониторинга Remote Config .
- Определите параметры с теми же именами, что и параметры, которые вы определили в своем приложении. Для каждого параметра вы можете установить значение по умолчанию (которое в конечном итоге будет переопределять значение по умолчанию в приложении), а также вы можете установить условные значения. Дополнительные сведения см. в разделе Параметры и условия Remote Config .
Шаг 5. Получите и активируйте значения
Чтобы получить значения параметров из Remote Config , вызовите метод fetchWithCompletionHandler:
или fetchWithExpirationDuration:completionHandler:
:. Любые значения, которые вы устанавливаете на серверной стороне, извлекаются и кэшируются в объекте Remote Config .
В случаях, когда вы хотите получить и активировать значения за один вызов, используйте fetchAndActivateWithCompletionHandler:
.
В этом примере извлекаются значения из серверной части Remote Config (не кэшированные значения) и вызывается activateWithCompletionHandler:
чтобы сделать их доступными для приложения:
Быстрый
remoteConfig.fetch { (status, error) -> Void in if status == .success { print("Config fetched!") self.remoteConfig.activate { changed, error in // ... } } else { print("Config not fetched") print("Error: \(error?.localizedDescription ?? "No error available.")") } self.displayWelcome() }
Цель-C
[self.remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) { if (status == FIRRemoteConfigFetchStatusSuccess) { NSLog(@"Config fetched!"); [self.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) { if (error != nil) { NSLog(@"Activate error: %@", error.localizedDescription); } else { dispatch_async(dispatch_get_main_queue(), ^{ [self displayWelcome]; }); } }]; } else { NSLog(@"Config not fetched"); NSLog(@"Error %@", error.localizedDescription); } }];
Поскольку эти обновленные значения параметров влияют на поведение и внешний вид вашего приложения, вам следует активировать полученные значения в тот момент, когда это обеспечит удобство работы вашего пользователя, например, когда пользователь в следующий раз откроет ваше приложение. Дополнительные сведения и примеры см. в разделе Стратегии загрузки Remote Config .
Шаг 6. Слушайте обновления в режиме реального времени.
После получения значений параметров вы можете использовать Remote Config в реальном времени для прослушивания обновлений из серверной части Remote Config . Remote Config в реальном времени сигнализирует подключенным устройствам о доступности обновлений и автоматически извлекает изменения после публикации новой версии Remote Config .
Обновления в реальном времени поддерживаются Firebase SDK для платформ Apple версии 10.7.0+ и выше.
В своем приложении вызовите
addOnConfigUpdateListener
чтобы начать прослушивать обновления и автоматически получать любые новые или обновленные значения параметров. В следующем примере прослушиваются обновления и при вызовеactivateWithCompletionHandler
используются вновь полученные значения для отображения обновленного приветственного сообщения.Быстрый
remoteConfig.addOnConfigUpdateListener { configUpdate, error in guard let configUpdate, error == nil else { print("Error listening for config updates: \(error)") } print("Updated keys: \(configUpdate.updatedKeys)") self.remoteConfig.activate { changed, error in guard error == nil else { return self.displayError(error) } DispatchQueue.main.async { self.displayWelcome() } } }
Цель-C
__weak __typeof__(self) weakSelf = self; [self.remoteConfig addOnConfigUpdateListener:^(FIRRemoteConfigUpdate * _Nonnull configUpdate, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error listening for config updates %@", error.localizedDescription); } else { NSLog(@"Updated keys: %@", configUpdate.updatedKeys); __typeof__(self) strongSelf = weakSelf; [strongSelf.remoteConfig activateWithCompletion:^(BOOL changed, NSError * _Nullable error) { if (error != nil) { NSLog(@"Activate error %@", error.localizedDescription); } dispatch_async(dispatch_get_main_queue(), ^{ [strongSelf displayWelcome]; }); }]; } }];
В следующий раз, когда вы опубликуете новую версию Remote Config , устройства, на которых работает ваше приложение и прослушивают изменения, вызовут обработчик завершения.
Регулирование
Если приложение выполняет выборку слишком много раз за короткий период времени, вызовы выборки регулируются, и SDK возвращает FIRRemoteConfigFetchStatusThrottled
. До версии SDK 6.3.0 ограничение составляло 5 запросов на выборку в течение 60 минут (более новые версии имеют более допустимые ограничения).
Во время разработки приложения вам может потребоваться чаще выполнять выборку, чтобы очень часто (много раз в час) обновлять кеш, чтобы можно было быстро выполнять итерацию по мере разработки и тестирования приложения. Обновления удаленной конфигурации в реальном времени автоматически обходят кэш при обновлении конфигурации на сервере. Чтобы обеспечить быструю итерацию проекта с большим количеством разработчиков, вы можете временно добавить в свое приложение свойство FIRRemoteConfigSettings
с низким минимальным интервалом выборки ( MinimumFetchInterval
).
Рекомендуемый интервал выборки по умолчанию для Remote Config составляет 12 часов. Это означает, что конфигурации не будут извлекаться из серверной части более одного раза в течение 12-часового окна, независимо от того, сколько фактически выполнено вызовов выборки. В частности, минимальный интервал выборки определяется в следующем порядке:
- Параметр в
fetch(long)
- Параметр в
FIRRemoteConfigSettings.MinimumFetchInterval
- Значение по умолчанию: 12 часов.
Следующие шаги
Если вы еще этого не сделали, изучите варианты использования Remote Config и ознакомьтесь с некоторыми ключевыми концепциями и документацией по расширенным стратегиям, в том числе: