Skip to main content
Documentation for version v73

Функции и классы

Публичные функции

Список публичных функций SDK
AltcraftSDK
// Инициализация SDK и установка конфигурации
├─ fun initialization(context: Context, configuration: AltcraftConfiguration, complete: ((Result<Unit>) -> Unit)? = null): Unit
// Полная очистка данных SDK (БД, SP, фоновые задачи)
├─ fun clear(context: Context, onComplete: (() -> Unit)? = null): Unit
// Регистрация провайдера JWT
├─ fun setJWTProvider(provider: JWTInterface?): Unit
// Разрешить переинициализацию push-модуля в текущей сессии
├─ fun reinitializePushModuleInThisSession(): Unit
// Базовый получатель Altcraft push (можно переопределить)
├─ open class PushReceiver
│ // Обработка входящего push-сообщения
│ ├─ open fun pushHandler(context: Context, message: Map<String, String>): Unit
│ // Точка входа доставки push в SDK
│ └─ companion object
│ └─ fun takePush(context: Context, message: Map<String, String>): Unit
// Публичные функции подписки
├─ val pushSubscriptionFunctions: PublicPushSubscriptionFunctions
│ // Подписка на пуш уведомление(status = SUBSCRIBED)
│ ├─ fun pushSubscribe(
│ │ context: Context,
│ │ sync: Boolean = true,
│ │ profileFields: Map<String, Any?>? = null,
│ │ customFields: Map<String, Any?>? = null,
│ │ cats: List<DataClasses.CategoryData>? = null,
│ │ replace: Boolean? = null,
│ │ skipTriggers: Boolean? = null
│ │ ): Unit
│ // Приостановка подписки на push уведомления(status = SUSPENDED)
│ ├─ fun pushSuspend(
│ │ context: Context,
│ │ sync: Boolean = true,
│ │ profileFields: Map<String, Any?>? = null,
│ │ customFields: Map<String, Any?>? = null,
│ │ cats: List<DataClasses.CategoryData>? = null,
│ │ replace: Boolean? = null,
│ │ skipTriggers: Boolean? = null
│ │ ): Unit
│ // Отписка от push уведомлегний (status = UNSUBSCRIBED)
│ ├─ fun pushUnSubscribe(
│ │ context: Context,
│ │ sync: Boolean = true,
│ │ profileFields: Map<String, Any?>? = null,
│ │ customFields: Map<String, Any?>? = null,
│ │ cats: List<DataClasses.CategoryData>? = null,
│ │ replace: Boolean? = null,
│ │ skipTriggers: Boolean? = null
│ │ ): Unit
│ // смена статуса подписки указанной в JWT с suspended на subscribed, остальные подписки содержащие указанный push токен сменят статус с subscribed на suspended.
│ ├─ suspend fun unSuspendPushSubscription(context: Context): DataClasses.ResponseWithHttpCode?
│ // Статус последней подписки профиля
│ ├─ suspend fun getStatusOfLatestSubscription(context: Context): DataClasses.ResponseWithHttpCode?
│ // Статус последней подписки профиля по указанному провайдеру push уведомлений
│ ├─ suspend fun getStatusOfLatestSubscriptionForProvider(context: Context, provider: String? = null): DataClasses.ResponseWithHttpCode?
│ // Статус подписки с текущим токеном устройсва.
│ ├─ suspend fun getStatusForCurrentSubscription(context: Context): DataClasses.ResponseWithHttpCode?
│ // добавить функциональное поле профиля(set/incr/...)
│ └─ fun actionField(key: String): ActionFieldBuilder
// Публичные функции управления токенами
├─ val pushTokenFunctions: PublicPushTokenFunctions
│ // Сохранить токен провайдера вручную (onNewToken)
│ ├─ fun setPushToken(context: Context, provider: String, token: String): Unit
│ // Получить текущий токен устройства
│ ├─ suspend fun getPushToken(context: Context): DataClasses.TokenData?
│ // Зарегистрировать провайдера FCM
│ ├─ fun setFCMTokenProvider(provider: FCMInterface?): Unit
│ // Зарегистрировать провайдера HMS
│ ├─ fun setHMSTokenProvider(provider: HMSInterface?): Unit
│ // Зарегистрировать провайдера RuStore
│ ├─ fun setRuStoreTokenProvider(provider: RustoreInterface?): Unit
│ // Удалить токен у выбранного провайдера
│ ├─ suspend fun deleteDeviceToken(context: Context, provider: String, complete: () -> Unit): Unit
│ // Форс-обновление токена (удалить → обновить)
│ ├─ fun forcedTokenUpdate(context: Context, complete: () -> Unit): Unit
│ // Изменить приоритет провайдеров и обновить токен
│ └─ suspend fun changePushProviderPriorityList(context: Context, priorityList: List<String>): Unit
// Публичные функции отправки событий по пушам
├─ val pushEventFunction: PublicPushEventFunctions
│ // Зафиксировать доставку Altcraft-push (вызывает delivery-ивент)
│ ├─ fun deliveryEvent(context: Context, message: Map<String, String>? = null, uid: String? = null): Unit
│ // Зафиксировать открытие Altcraft-push (вызывает open-ивент)
│ └─ fun openEvent(context: Context, message: Map<String, String>? = null, uid: String? = null): Unit
// События SDK (один подписчик)
└─ val eventSDKFunctions: Events
// Подписаться на события SDK
├─ fun subscribe(newSubscriber: (DataClasses.Event) -> Unit): Unit
// Отписаться от событий SDK
└─ fun unsubscribe(): Unit

Публичные классы

Список публичных классов SDK
com.altcraft.sdk.config
└─ class AltcraftConfiguration private constructor(...)
// Класс инициализации конфигурации Altcraft SDK:
// URL API, ресурсный токен, сведения о приложении, флаг использования foreground service
// и настройки push-уведомлений (канал, модули получателя и приоритет провайдеров).

├─ class Builder(
│ apiUrl: String, // Базовый URL Altcraft API (обязательный)
│ icon: Int? = null, // ID ресурса иконки уведомлений (опционально)
│ rToken: String? = null, // Ролевой токен
│ usingService: Boolean = false, // Использовать foreground service при подписке/обновлении токена
│ serviceMessage: String? = null, // Текст уведомления foreground service (опционально)
│ appInfo: DataClasses.AppInfo? = null, // Метаданные приложения (ID/IID/версия) (опционально)
│ providerPriorityList: List<String>? = null, // Приоритет провайдеров push уведомлений(опционально)
│ pushReceiverModules: List<String>? = null, // Пакеты модулей, где может быть переопределён PushReceiver (опционально)
│ pushChannelName: String? = null, // Имя канала push-уведомлений (опционально)
│ pushChannelDescription: String? = null // Описание канала push-уведомлений (опционально)
│ )
│ └─ fun build(): AltcraftConfiguration // Построить валидную конфигурацию

├─ fun getApiUrl(): String // Возвращает базовый URL Altcraft API
├─ fun getIcon(): Int? // Возвращает ID иконки для уведомлений (опционально)
├─ fun getRToken(): String? // Возвращает ресурсный токен (опционально)
├─ fun getUsingService(): Boolean // Признак использования foreground service при подписке/обновлении токена
├─ fun getServiceMessage(): String? // Сообщение уведомления foreground service (опционально)
├─ fun getAppInfo(): DataClasses.AppInfo? // Сведения о приложении (ID/IID/версия) (опционально)
├─ fun getProviderPriorityList(): List<String>? // Приоритет провайдеров push-уведомлений (опционально)
├─ fun getPushReceiverModules(): List<String>? // Модули с переопределениями PushReceiver (опционально)
├─ fun getPushChannelName(): String? // Имя канала уведомлений (опционально)
└─ fun getPushChannelDescription(): String? // Описание канала уведомлений (опционально)

Публичные data-классы

Список публичных data-классов SDK
DataClasses
// Базовое SDK-событие (универсальная телеметрия)
├─ open class Event(
│ function: String,
│ eventCode: Int? = null,
│ eventMessage: String? = null,
│ eventValue: Map<String, Any?>? = null,
│ date: Date = Date()
│ )

│ // Ошибка, наследует Event
├─ open class Error(
│ function: String,
│ eventCode: Int? = 0,
│ eventMessage: String? = null,
│ eventValue: Map<String, Any?>? = null,
│ date: Date = Date()
│ ) : Event(...)

│ // Ошибка запроса, для которого предусмотрен автоматический повтор попытки со стороны SDK, наследует Error
├─ class RetryError(
│ function: String,
│ eventCode: Int? = 0,
│ eventMessage: String? = null,
│ eventValue: Map<String, Any?>? = null,
│ date: Date = Date()
│ ) : Error(...)

│ // Информация о приложении (идентификаторы/версия)
├─ data class AppInfo(
│ appID: String,
│ appIID: String,
│ appVer: String
│ )

│ // Обёртка ответа API с HTTP-кодом
├─ data class ResponseWithHttpCode(
│ httpCode: Int?,
│ response: Response?
│ )

│ // Ответ API: код/текст ошибки и профиль
├─ data class Response(
│ error: Int? = null,
│ @SerialName("error_text") errorText: String? = null,
│ profile: ProfileData? = null
│ )

│ // Данные профиля пользователя
├─ data class ProfileData(
│ id: String? = null,
│ status: String? = null,
│ @SerialName("is_test") isTest: Boolean? = null,
│ subscription: SubscriptionData? = null
│ )

│ // Текущая подписка профиля
├─ data class SubscriptionData(
│ @SerialName("subscription_id") subscriptionId: String? = null,
│ @SerialName("hash_id") hashId: String? = null,
│ provider: String? = null,
│ status: String? = null,
│ fields: Map<String, JsonElement>? = null,
│ cats: List<CategoryData>? = null
│ )

│ // Категория подписки (имя/заголовок/флаги)
├─ data class CategoryData(
│ name: String? = null,
│ title: String? = null,
│ steady: Boolean? = null,
│ active: Boolean? = null
│ )

│ // Токен push-провайдера устройства
└─ data class TokenData(
provider: String,
token: String
)