Перейти к основному содержимому

Подключение SDK

После добавления приложения подключите SDK IOS Remote Config.

Установка

Swift Package Manager

  1. Добавьте SPM зависимость в Xcode.
  2. Выберите файл проекта в Xcode.
let package = Package)
dependencies: [
.package(url: "...", from: "1.0.0")
],
targets: [
.target(
name: "MyAppMainTarget",
dependencies: [
.product(name: "RSRemoteConfig", package: "...")
]
)
]
)

Cocoapods

  1. Добавьте библиотеку в Podfile:
platform :iOS, '13.0'

target 'YourProjectName' do
use_frameworks!

pd 'RSRemoteConfig', '-> 1.0.0'
end
  1. Установите зависмости.

Использование pod install

  1. Скопируйте appID вашего приложения из консоли https://remote-config.rustore.ru/.
  2. Импортируйте модуль RSRemoteConfig.
  3. Сконфигурируйте RemoteConfigClient для подключения к серверу remote config.
  4. Получите текущие значения remote config.
import RSRemoteConfig

let client = RemoteConfigClient(appID: "ваш_app_id")
let remoteConfig = await client.remoteConfig()

let integerValue = remoteConfig.integer(forKey: "key_name")

Получение значений remote config происходит асинхронно.

Можно заранее "прогреть" конфигурацию с помощью вызова метода start():

let client = RemoteConfigClient(appID: "ваш_app_id")
client.start()

Удерживайте сильную ссылку на объект RemoteConfigClient и везде используйте его для получения значений remote config.

Конфигурация клиента

Клиент можно сконфигурировать с помощью RemoteConfigConfiguration:

let configuration = RemoteConfigConfiguration(
environment: .alpha,
updateBehaviour: .actual,
requestParametersProvider: {
RemoteConfigConfiguration.RequestParameters(
account: item.account
)
}
)

let client = RemoteConfigClient(appID: "ваш_app_id", configuration: configuration)

Параметры

  • environment: используется для тестирования конфигурации на различных сборках приложения. Возможные значения: .alpha, .beta, .release.

  • requestParametersProvider: замыкание, которое позволяет динамически передавать параметр account для получения remote config. Конфигурируется в консоли.

  • updateBehaviour: стратегия для фонового обновления remote config значений.

Фоновые обновления

Полученные значения remote config кешируются локально и могут быть обновлены в фоне.

Существуют три стратегии фонового обновления значений remote config:

  1. Default (Используется по умолчанию)
  2. Snapshot
  3. Actual

Default

let configuration = RemoteConfigConfiguration(
updateBehaviour: .default(timeInterval: 900) // 15 mins
)
let client = RemoteConfigClient(appID: "ваш_app_id", configuration: configuration)
let remoteConfig = await client.remoteConfig()

Запускается процесс фоновых обновлений с указанным интервалом.

Интервал обновления задается в параметре timeInterval. Интервал обновления по умолчанию — 15 минут.

Если локальный кеш пуст или срок хранения кеша истек, то при вызове client.remoteConfig(), будет отправлен запрос на сервер. Доступ к конфигурации будет ожидать завершения запроса.

Через 15 минут произойдет обновление значений remote config. Обновленные значения remote config будут сохранены в кеше, чтобы при следующем вызове await client.remoteConfig() вернуть свежие значения.

Snapshot

let configuration = RemoteConfigConfiguration(
updateBehaviour: .snapshot(timeInterval: 900) // 15 mins
)
let client = RemoteConfigClient(appID: "ваш_app_id", configuration: configuration)
let remoteConfig = await client.remoteConfig()

Запускается процесс фоновых обновлений с указанным интервалом.

Интервал обновления задается в параметре timeInterval. Интервал обновления по умолчанию — 15 минут.

Если локальный кеш пуст или срок хранения кеша истек, то при вызове client.remoteConfig(), будет отправлен запрос на сервер. Доступ к конфигурации будет ожидать завершения запроса.

Через 15 минут произойдет обновление значений remote config. Обновленные значения remote config будут сохранены в кеше. Вызов await client.remoteConfig() будет всегда возвращать одинаковые значения в рамках жизни процесса.

⚠️ Отличие от .default в том, что обновленные значения remote config станут доступны после перезапуска.

Actual

let configuration = RemoteConfigConfiguration(
updateBehaviour: .actual
)
let client = RemoteConfigClient(appID: "ваш_app_id", configuration: configuration)
let remoteConfig = await client.remoteConfig()

Не запускает никаких обновлений в фоне.

При вызове await client.remoteConfig() всегда отправляет запрос на сервер, чтобы получить актуальные значения.

Чтение значений remote config

После получения remote config, есть возможность читать типизированные значения:

let remoteConfig = await client.remoteConfig()
remoteConfig.integer(forKey: "integer_value")
remoteConfig.double(forKey: "double_value")
remoteConfig.string(forKey: "string_value")
remoteConfig.bool(forKey: "bool_value")
remoteConfig.jsonObject(forKey: "json_object")

Подписка на события

Можно получить сообщения о событиях в работе SDK с помощью объекта RemoteConfigEventListener:

let client = Client(appID: "ваш_app_id")
client.addEventListener(RemoteConfigEventListener(
didUpdatePersistentStorage: {
print("remote config client did update persistent storage")
},
didCompleteNetworkRequest: { result in
print("remote config client did complete network request with result \(String(describing: result))")
}
))

didUpdatePersistentStorage — вызывается после обновления постоянного хранилища со значениями remote config. didCompleteNetworkRequest — вызывается после окончания сетевого запроса для получения кончика.

Если у вас остались вопросы, направляйте их специалистам технической поддержки RuStore: support@rustore.ru.