Подключение SDK
После добавления приложения подключите SDK IOS Remote Config.
Установка
Swift Package Manager
- Добавьте SPM зависимость в Xcode.
- Выберите файл проекта в Xcode.
let package = Package)
dependencies: [
.package(url: "...", from: "1.0.0")
],
targets: [
.target(
name: "MyAppMainTarget",
dependencies: [
.product(name: "RSRemoteConfig", package: "...")
]
)
]
)
Cocoapods
- Добавьте библиотеку в Podfile:
platform :iOS, '13.0'
target 'YourProjectName' do
use_frameworks!
pd 'RSRemoteConfig', '-> 1.0.0'
end
- Установите зависмости.
Использование pod install
- Скопируйте appID вашего приложения из консоли https://remote-config.rustore.ru/.
- Импортируйте модуль RSRemoteConfig.
- Сконфигурируйте
RemoteConfigClient
для подключения к серверу remote config. - Получите текущие значения 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:
- Default (Используется по умолчанию)
- Snapshot
- 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.