Перейти к основному содержимому
Altcraft Docs LogoAltcraft Docs Logo
Для пользователяДля разработчикаДля администратора
Веб-сайтБаза знаний
Русский
  • Русский
  • English
v75
Войти
  • API пользователя
  • Взаимодействие с API
  • Матчинг
  • Профили
  • Базы данных
  • Ресурсы
  • Сегменты
  • Стоп-списки
  • Шаблоны
  • Рассылки
  • Кампании
  • Сценарии (цепочки)
  • Промокоды
  • Программы лояльности
  • Цели
  • Пуши приложений
  • Маркет
  • Отчеты и статистика
  • Сендеры
  • Объекты
  • Запросы к внешним базам данных
  • Прочее
  • Список API-методов
  • Импорт и настройка коллекции API-методов в Postman
  • SDK
    • mSDK
      • Android
        • Быстрый старт
        • Конфигурация SDK
        • Функционал SDK
        • Публичный API SDK
        • Настройка провайдеров
      • iOS
      • React Native (Android/iOS)
      • Работа с ролевым и JWT-токеном
  • SDK
  • mSDK
  • Android
  • Публичный API SDK
Документация для версии v75

Публичный API SDK

object AltcraftSDK
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 unlockInitialOperationsInThisSession(): 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
class AltcraftConfiguration
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, // Метаданные Firebase Analytics (опционально)
| enableLogging: Boolean = false, // Включает/отключает ведение логов (опционально)
│ 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 getEnableLogging(): Boolean // Включает/отключает ведение логов (опционально)
├─ fun getProviderPriorityList(): List<String>? // Приоритет провайдеров push-уведомлений (опционально)
├─ fun getPushReceiverModules(): List<String>? // Модули с переопределениями PushReceiver (опционально)
├─ fun getPushChannelName(): String? // Имя канала уведомлений (опционально)
└─ fun getPushChannelDescription(): String? // Описание канала уведомлений (опционально)
Event Classes
Event
// Базовое событие SDK (универсальная телеметрия).
function: String
eventCode: Int?
eventMessage: String?
eventValue: Map<String, Any?>?
date: Date


Error
// Ошибка SDK, наследует Event.
function: String
eventCode: Int?
eventMessage: String?
eventValue: Map<String, Any?>?
date: Date


RetryError
// Ошибка запроса, для которого предусмотрен автоматический повтор и выполнение
function: String
eventCode: Int?
eventMessage: String?
eventValue: Map<String, Any?>?
date: Date
Data Classes
// Токен push-провайдера устройства
data class TokenData(
provider: String,
token: String
)


// Опциональные данные для Firebase Analytics (если используется)
data class AppInfo(
appID: String,
appIID: String,
appVer: String
)
asMap(): Map<String, String>


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


// Ответ запроса
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?,
title: String? = null,
steady: Boolean? = null,
active: Boolean?
)


// Подписка на канал Email (добавляется мобильным событием)
data class EmailSubscription(
@SerialName("resource_id") resourceId: Int,
email: String,
status: String? = null,
priority: Int? = null,
@SerialName("custom_fields") customFields: Map<String, @Contextual Any?>? = null,
cats: List<String>? = null,
@SerialName("channel") channel: String = "email"
)


// Подписка на канал SMS (добавляется мобильным событием)
data class SmsSubscription(
@SerialName("resource_id") resourceId: Int,
phone: String,
status: String? = null,
priority: Int? = null,
@SerialName("custom_fields") customFields: Map<String, @Contextual Any?>? = null,
cats: List<String>? = null,
@SerialName("channel") channel: String = "sms"
)


// Подписка на push-канал (добавляется мобильным событием)
data class PushSubscription(
@SerialName("resource_id") resourceId: Int,
provider: String,
@SerialName("subscription_id") subscriptionId: String,
status: String? = null,
priority: Int? = null,
@SerialName("custom_fields") customFields: Map<String, @Contextual Any?>? = null,
cats: List<String>? = null,
@SerialName("channel") channel: String = "push"
)


// Подписка с cc_data (Telegram, WhatsApp, Viber, Notify)
data class CcDataSubscription(
@SerialName("resource_id") resourceId: Int,
@SerialName("channel") channel: String,
@SerialName("cc_data") ccData: JsonObject,
status: String? = null,
priority: Int? = null,
@SerialName("custom_fields") customFields: Map<String, @Contextual Any?>? = null,
cats: List<String>? = null
)


// Контейнер UTM-параметров для атрибуции мобильных событий (все поля опциональны)
data class UTM(
campaign: String? = null,
content: String? = null,
keyword: String? = null,
medium: String? = null,
source: String? = null,
temp: String? = null
)
Interfaces

JWTInterface:

JWTInterface
// Доступ к текущему JWT
└─ fun getJWT(): String?
// Возвращает JWT или null

FCMInterface:

FCMInterface
// Контракт операций с FCM-токеном
├─ suspend fun getToken(): String?
│ // Возвращает токен FCM или null
└─ suspend fun deleteToken(completion: (Boolean) -> Unit)
// Удаляет токен FCM

HMSInterface:

HMSInterface
// Контракт операций с HMS-токеном
├─ suspend fun getToken(context: Context): String?
│ // Возвращает токен HMS или null
└─ suspend fun deleteToken(context: Context, complete: (Boolean) -> Unit)
// Удаляет токен HMS

RuStoreInterface:

RustoreInterface
// Контракт операций с RuStore-токеном
├─ suspend fun getToken(): String?
│ // Возвращает токен RuStore или null
└─ suspend fun deleteToken(complete: (Boolean) -> Unit)
// Удаляет токен RuStore

Subscription:

Subscription (sealed interface)
// Базовый контракт модели подписки для всех каналов
├─ val resourceId: Int
│ // Обязательный ID ресурса Altcraft (JSON: "resource_id")
├─ val status: String?
│ // Необязательный статус подписки
├─ val priority: Int?
│ // Необязательный приоритет
├─ val customFields: Map<String, Any?>?
│ // Необязательные стандартные и кастомные поля (JSON: "custom_fields")
├─ val cats: List<String>?
│ // Необязательные категории подписки
└─ val channel: String
// Обязательный тип канала (например, "email", "sms", "push", "telegram_bot", ...)
Последнее обновление 5 февр. 2026 г.
Предыдущая страница
Функционал SDK
Следующая страница
Настройка провайдеров
© 2015 - 2025 Altcraft. Все права защищены.