Функционал SDK
Предварительно вам необходимо настроить SDK для работы с вашим приложением. Подробная инструкция находится здесь
SDK разделён на модули: core (авторизация, события), push, target (цели), profile и in-app. Каждый модуль подключается отдельной зависимостью и доступен через свой объект — AltcraftSDK.auth, AltcraftSDK.push, AltcraftSDK.target, AltcraftSDK.profile, AltcraftSDK.inApp.
Core: авторизация
AltcraftSDK
└─ val auth: AuthAPI
// Установить поставщика JWT-токенов (null — снять)
├─ fun setJWTProvider(provider: JWTInterface?): Unit
// Аутентифицировать текущего пользователя SDK
├─ fun authenticate(context: Context): Unit
// Выйти из профиля (возврат к анонимной сессии)
├─ fun logOut(context: Context): Unit
// Проверить, авторизован ли текущий пользователь
└─ suspend fun isAuthenticated(context: Context): Boolean
Функции авторизации:
fun setJWTProvider()— устанавливает реализациюJWTInterface, через которую SDK получает JWT-токены. Чтобы снять провайдера, передайтеnull. Для работы без JWT используйте rToken из конфигурации.fun authenticate()— аутентифицирует текущего пользователя: отправляет на сервер запрос с текущими данными аутентификации (JWT-токен или rToken) и привязывает устройство к профилю пользователя. После успешной аутентификации пользователь получает доступ к персонализированным In-App уведомлениям.fun logOut()— завершает текущую сессию аутентификации и переводит устройство в анонимный режим. В анонимном режиме недоступны персонализированные In-App уведомления и управление п одпиской.suspend fun isAuthenticated()— возвращаетtrue, если текущий пользователь SDK авторизован, иfalseв противном случае.
Вызывайте authenticate() только тогда, когда пользователь действительно выполняет вход в приложение и известен для клиента (например, после успешной авторизации через форму логина, OAuth или другой механизм аутентификации вашего приложения). С logOut() — аналогично: только при реальном выходе пользователя.
Пример установки JWT-провайдера:
class App : Application() {
override fun onCreate() {
super.onCreate()
AltcraftSDK.auth.setJWTProvider(JWTProvider(applicationContext))
// инициализация SDK
}
}
Пример проверки статуса авторизации:
CoroutineScope(Dispatchers.IO).launch {
val authenticated = AltcraftSDK.auth.isAuthenticated(context)
}
Очистка данных SDK
AltcraftSDK
// Полная очистка данных SDK (БД, SharedPreferences, фоновые задачи)
└── fun clear(
context: Context,
onComplete: (() -> Unit)? = null
): Unit
Функция выполняет полную очистку данных SDK: отменяет ожидающие фоновые задачи WorkManager, удаляет записи БД Room и очищает SharedPreferences. Необязательный параметр onComplete вызывается после завершения очистки.
Сброс запрета на retry-операции при инициализации SDK
При инициализации SDK выполняется запуск фоновых задач, выполняющих контроль и повторную отправку запросов, связанных с push-уведомлениями, целями, а также проверку и выполнение запроса на обновление push-токена устройства. Выполнение данной функции ограничено одним запуском в пределах одного жизненного цикла процесса приложения. Иногда может возникнуть необходимость сброса этого ограничения.
AltcraftSDK
// Разрешить переинициализацию фоновых задач в текущей сессии
└── fun unlockInitialOperationsInThisSession(): Unit
Функция сбрасывает флаг запрета на повторный запуск фоновых задач контроля и повторной отправки запросов.
Core: события SDK
// API событий SDK
AltcraftSDK
└── val SDKEvents: Events
// Подписка на события SDK (заменяет существующего подписчика)
├── fun subscribe(
│ newSubscriber: (Event) -> Unit
│ ): Unit
// Отписка от событий
└── fun unsubscribe(): Unit
В приложении может быть только один активный подписчик на события SDK.
Типы событий SDK:
- Event — общее событие (информация, успешные запросы);
- Error — событие об ошибке;
- RetryError — событие об ошибке при выполнении запроса, для которого предусмотрен автоматический повтор на стороне SDK.
Каждое событие содержит поля:
- function — имя функции, вызвавшей событие;
- event — тип события SDK (
SDKEvent, список см. в таблице ниже); - eventMessage — сообщ ение события;
- eventValue — дополнительные данные, добавляемые к некоторым событиям;
- date — время события;
- internal — флаг, указывающий, является ли событие внутренним.
Подписка на события
fun subscribe(newSubscriber: (Event) -> Unit): Unit
Функция подписывает приложение на события SDK. При возникновении события SDK она вызывает переданный newSubscriber и передаёт в него экземпляр Event (или его наследника).
Пример использования:
AltcraftSDK.SDKEvents.subscribe { event ->
// Обработка события
}
Классы событий SDK
open class Event(
val function: String,
val event: SDKEvent? = null,
val eventMessage: String? = null,
val eventValue: Map<String, Any?>? = null,
val date: Date = Date(),
val internal: Boolean = false
)
open class Error(
function: String,
event: SDKEvent? = null,
eventMessage: String? = null,
eventValue: Map<String, Any?>? = null,
date: Date = Date(),
) : Event(function, event, eventMessage, eventValue, date)
class RetryError(
function: String,
event: SDKEvent? = null,
eventMessage: String? = null,
eventValue: Map<String, Any?>? = null,
date: Date = Date(),
) : Error(function, event, eventMessage, eventValue, date)