Вы можете использовать Firebase Remote Config для определения параметров в вашем приложении и обновить их значения в облаке, что позволяет вам изменять внешний вид и поведение вашего приложения без распространения обновления приложения. Это руководство проходит через шаги, чтобы начать работу и предоставляет некоторый пример кода, который доступен для клонирования или загрузки с репозитория Firebase/QuickStart-IOIS GitHub.
Шаг 1: Добавьте Remote Config в ваше приложение
Если вы еще этого не сделали, добавьте Firebase в свой Apple Project .
Для Remote Config Google Analytics требуется для условного нацеливания экземпляров приложений на свойства пользователя и аудиторию. Убедитесь, что вы включите Google Analytics в свой проект.
Создайте объект Remote Config Singleton, как показано в следующем примере:
Быстрый
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); } }];
Поскольку эти обновленные значения параметров влияют на поведение и внешний вид вашего приложения, вы должны активировать извлекаемые значения за раз, которые обеспечивают плавный опыт для вашего пользователя, например, в следующий раз, когда пользователь открывает ваше приложение. См. Удаленную стратегии загрузки конфигурации для получения дополнительной информации и примеров.
Шаг 6: Слушайте обновления в режиме реального времени
После того, как вы получите значения параметров, вы можете использовать Remote Config в реальном времени для прослушивания обновлений из Remote Config . Remote Config в реальном времени на подключенные устройства, когда доступны обновления, и автоматически получает изменения после публикации новой версии Remote Config .
Обновления в реальном времени поддерживаются Firebase SDK для Apple Platforms V10.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 , устройств, которые запускают ваше приложение и прислушиваются к изменениям, вызовут обработчик завершения.
Дросселя
Если приложение приносит слишком много раз за короткий период, вызовы Feetch задушен, а SDK возвращает FIRRemoteConfigFetchStatusThrottled
. Перед версией SDK 6.3.0 лимит был 5 запросов избрать в 60 -минутном окне (более новые версии имеют больше разрешающих пределов).
Во время разработки приложений вы, возможно, захотите получать чаще, чтобы очень часто обновлять кэш (много раз в час), чтобы вы быстро обращались при разработке и тестировании своего приложения. Обновления удаленного конфигурации в реальном времени автоматически обходят кэш, когда конфигурация обновляется на сервере. Чтобы приспособиться к быстрой итерации в проекте с многочисленными разработчиками, вы можете временно добавить свойство FIRRemoteConfigSettings
с низким минимальным интервалом извлечения ( MinimumFetchInterval
) в вашем приложении.
По умолчанию и рекомендованному интервалу производства для Remote Config составляют 12 часов, что означает, что конфигурации не будут извлечены из бэкэнд более одного раза в 12 -часовом окне, независимо от того, сколько вызовов фактически сделано. В частности, минимальный интервал выборки определяется в следующем порядке:
- Параметр в
fetch(long)
- Параметр в
FIRRemoteConfigSettings.MinimumFetchInterval
- Значение по умолчанию 12 часов
Следующие шаги
Если вы еще этого не сделали, изучите варианты использования Remote Config и посмотрите на некоторые из ключевых концепций и документации «Расширенные стратегии», в том числе: