README.md

RU EN

RuStore React Native Remote Config SDK для работы с облачным сервисом конфигурации приложения

🔗 Документация разработчика

Подключение в проект

// HTTPS
npm install git+https://git@gitflic.ru/project/rustore/rustore-react-native-remoteconfig.git

// SSH
npm install git+ssh://git@gitflic.ru/project/rustore/rustore-react-native-remoteconfig.git

Поддерживаемые платформы

Платформа Поддержка
Android
iOS 14+

Обертка использует ru.rustore.sdk:remoteconfig:10.5.1 на Android и RSRemoteConfig на iOS.

RSRemoteConfig.xcframework не хранится в репозитории. Во время pod install podspec скачивает версию 1.2.2 из Nexus и проверяет SHA-256 из официального Swift Package.

После установки npm-пакета выполните pod install в каталоге iOS-приложения:

cd ios
pod install

Быстрый старт

import RemoteConfigClient, {
  RemoteConfigClientParams,
  RemoteConfigEvents,
  UpdateBehaviour,
  remoteConfigEventEmitter,
} from 'react-native-rustore-remote-config';

// 1. Создание клиента — синхронный вызов, должен выполняться до остальных методов
RemoteConfigClient.createRemoteConfig(
  '11111111-1111-1111-1111-111111111111', // appId из консоли RuStore
  15,                                      // интервал обновления, минуты
  UpdateBehaviour.DEFAULT,
  new RemoteConfigClientParams({ deviceModel: 'SAMSUNG S24' })
);

// 2. Подписка на события клиента
const subscription = remoteConfigEventEmitter.addListener(
  RemoteConfigEvents.INIT_COMPLETE,
  () => console.log('init complete')
);

// 3. Инициализация
try {
  await RemoteConfigClient.init();
} catch (error) {
  console.error(error);
}

// 4. Получение всей конфигурации (все значения — строки)
const config = await RemoteConfigClient.getRemoteConfig();

// 5. Типизированное чтение отдельных значений
const welcome = await RemoteConfigClient.getString('welcome_message');
const enabled = await RemoteConfigClient.getBoolean('feature_enabled');

subscription.remove();

Сценарий использования

Выбор модели обновления

На стартовом экране примера выбирается значение UpdateBehaviour — модель обновления конфигурации. Смена модели потребует перезапуска приложения.

Выбор модели обновления

Работа с конфигурацией

После выбора модели обновления доступны:

  • createRemoteConfig — создание клиента Remote Config;
  • init — инициализация клиента;
  • getRemoteConfig — получение и отображение конфигурации;
  • getTypedValues — типизированное чтение значений по ключу;
  • setAccount / setLanguage — динамически передаваемые параметры для синхронизации конфигурации.

Работа с конфигурацией

API

createRemoteConfig

createRemoteConfig(
  appId: string,
  updateInterval: number,
  updateBehaviour: UpdateBehaviour,
  params?: RemoteConfigClientParams
): void

Создает нативный RemoteConfigClient. Метод синхронный (не возвращает Promise) и должен быть вызван до использования остальных методов — иначе они завершатся ошибкой RemoteConfigClientNotCreated.

  • Повторные вызовы игнорируются.
  • После перезагрузки JS-бандла (RN reload) нативный клиент не пересоздается, а переиспользуется.
  • updateInterval задается в минутах и используется только для моделей обновления DEFAULT и SNAPSHOT.

RemoteConfigClientParams

Дополнительные параметры запроса конфигурации. Все поля опциональны.

Параметр Тип Описание
deviceModel string Модель устройства, например SAMSUNG S24
osVersion string Версия ОС, например 14
deviceId string Идентификатор устройства. Если не задан, SDK использует ANDROID_ID
appVersion string Версия приложения
appBuild string Номер сборки приложения
environment Environment Окружение: Environment.ALPHA, Environment.BETA или Environment.RELEASE

UpdateBehaviour

Модель обновления конфигурации. Подробнее — в документации.

Значение Описание
ACTUAL При каждом вызове getRemoteConfig() выполняется сетевой запрос — возвращается актуальная конфигурация с сервера
DEFAULT Конфигурация обновляется в фоне с интервалом updateInterval; getRemoteConfig() возвращает кэшированную конфигурацию. До первой успешной загрузки вызов завершается ошибкой FailedToReceiveRemoteConfig
SNAPSHOT Конфигурация обновляется в фоне с интервалом updateInterval; getRemoteConfig() возвращает последний полученный снапшот. До первой успешной загрузки вызов завершается ошибкой FailedToReceiveRemoteConfig

init

init(): Promise<boolean>

Инициализирует клиент. При успехе resolves с true, при неудаче rejects с ошибкой. Завершение инициализации также можно отследить через событие INIT_COMPLETE.

getRemoteConfig

getRemoteConfig(): Promise<Record<string, string>>

Возвращает всю конфигурацию как объект «ключ — значение». Все значения — строки; для чтения с приведением типа используйте типизированные геттеры.

getShortSegments

getShortSegments(): Promise<string | null>

Возвращает идентификаторы коротких сегментов или null, если они отсутствуют.

Типизированные геттеры

Метод Возвращает Правило приведения
containsKey(key) Promise<boolean>
getString(key) Promise<string> значение как строка
getBoolean(key) Promise<boolean> строка true / false
getInt(key) Promise<number> целое число
getLong(key) Promise<number> целое число
getDouble(key) Promise<number> число с плавающей точкой
getFloat(key) Promise<number> число с плавающей точкой
getNumber(key) Promise<number> ⚠️ устарел, используйте getDouble

Геттеры читают последнюю полученную конфигурацию. Если конфигурация еще не была загружена, геттер сначала выполнит ее загрузку, а затем вернет значение.

Если ключа нет в конфигурации, вызов завершается ошибкой RemoteConfigCastException вида error getting the value by key: (key) as String. Если значение не приводится к запрошенному типу (например, getBoolean для значения "Default value"), ошибка содержит значение: error getting the value by key: (key) as Boolean: (value).

setAccount / setLanguage

setAccount(account: string): void
setLanguage(language: string): void

Динамически передаваемые параметры — применяются ко всем последующим запросам конфигурации. На iOS Swift SDK поддерживает динамическое изменение только account; language применяется, если задан до createRemoteConfig.

Управление кэшем (iOS)

getKeys(): Promise<string[]>
getObject(key: string): Promise<string | boolean | number | null>
getCacheModificationDate(): Promise<number | null>
removeCache(): Promise<void>

Эти методы соответствуют дополнительным API Swift SDK. getCacheModificationDate возвращает Unix timestamp в миллисекундах.

События

Подписка через remoteConfigEventEmitter. Полезная нагрузка каждого события — объект { callback: string } (строковое представление результата или исключения).

Событие Когда вызывается
BACKGROUND_JOB_ERRORS ошибка фоновой задачи обновления
FIRST_LOAD_COMPLETE первая загрузка конфигурации завершена
INIT_COMPLETE инициализация клиента завершена
MEMORY_CACHE_UPDATED обновлен кэш конфигурации в памяти
PERSISTENT_STORAGE_UPDATED обновлено постоянное хранилище
REMOTE_CONFIG_NETWORK_REQUEST_FAILURE сетевой запрос завершился ошибкой

На iOS SDK генерирует события INIT_COMPLETE, FIRST_LOAD_COMPLETE, PERSISTENT_STORAGE_UPDATED и REMOTE_CONFIG_NETWORK_REQUEST_FAILURE.

import { RemoteConfigEvents, remoteConfigEventEmitter } from 'react-native-rustore-remote-config';

const subscription = remoteConfigEventEmitter.addListener(
  RemoteConfigEvents.MEMORY_CACHE_UPDATED,
  (event) => console.log(event.callback)
);

// Не забудьте отписаться
subscription.remove();

Обработка ошибок

Все асинхронные методы при ошибке отклоняют Promise:

  • code — имя класса исключения SDK (RemoteConfigNetworkException, RemoteConfigClientNotCreated, RemoteConfigCastException, FailedToReceiveRemoteConfig и др.);
  • message — сообщение исключения. Для сетевых ошибок дополнительно указывается HTTP-код: response with error from https://client-api-m.remote-config.rustore.ru/api/get (HTTP 400).

Типичные ошибки:

Сообщение Причина
To get an instance of the RemoteConfigClient, you must first call RemoteConfigClientBuilder(appId, context).build() метод вызван до createRemoteConfig
Remote configuration not received yet конфигурация еще не загружена (DEFAULT/SNAPSHOT до первой загрузки)
error getting the value by key: (key) as Boolean: (value) значение не приводится к запрошенному типу
response with error from ... (HTTP 400) сервер вернул ошибку; проверьте appId и наличие опубликованной конфигурации в консоли

Сборка примера приложения

Вы можете ознакомиться с демонстрационным приложением содержащим представление работы всех методов sdk:

Для iOS используйте Ruby 3.3+ и CocoaPods 1.17:

cd example
bundle install
cd ios
bundle exec pod install

Условия распространения

Данное программное обеспечение, включая исходные коды, бинарные библиотеки и другие файлы распространяется под лицензией MIT. Информация о лицензировании доступна в документе MIT-LICENSE.

Техническая поддержка

Дополнительная помощь и инструкции доступны на странице help.rustore.ru.

Описание
SDK для работы с облачным сервисом конфигурации приложения
Релизы
2026-09-03
последний
Конвейеры
0 успешных
0 с ошибкой
Разработчики