Подключение 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
для получения удалённой конфигурации. Конфигурируется в консоли. -
updateBehaviour
: стратегия для фонового обновления значений удалённой конфигурации.
Фоновые обновления
Полученные значения 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()
всегда отправляет запрос на сервер, чтобы получить актуальные значения.
Чтение значений remoteConfig
После получения remoteConfig
, есть возможность читать типизированные значения.
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
— вызывается после обновления постоянного хранилища со значениями удалённой конфигурации.didCompleteNetworkRequest
— вызывается после окончания сетевого запроса для получения кончика.
Если у вас остались вопросы, направляйте их специалистам технической поддержки RuStore: support@rustore.ru.