Перейти к основному содержимому
Altcraft Docs LogoAltcraft Docs Logo
Пользователям iconПользователям
Разработчикам iconРазработчикам
Администраторам iconАдминистраторам
Русский
  • Русский
  • English
Войти
    API пользователяВзаимодействие с APIМатчинг
      Профилиarrow
    • Импортировать профильОбновить профильДобавить профиль в базу данныхПолучить информацию о профилеИмпортировать профиль в RabbitMQМассовое добавление профилей в базу данныхМассовое обновление профилейМассовый импорт профилейУдалить профильФункциональное обновление полей базыФункциональное обновление полей подпискиВыгрузка профилей в файлПолучение данных по нескольким профилямОбъединение нескольких профилейОтписать профиль от ресурсаРазделение профиля
        Историяarrow
      • Получить историю одного профиляПолучить историю нескольких профилей
        Связи профилейarrow
      • Добавить связьУдалить связьУсилить/ослабить связьПерезаписать значения свойств связиПолучить информацию о связях профиляПолучить список связей профиля
        Подпискиarrow
      • Добавить или редактировать подпискуПолучить все подписки профиляПолучить все подписки нескольких профилейПолучить информацию о подписке профиляУдалить подписку профиляВосстановить удаленную подписку профиляПриостановить все подпискиВосстановить все приостановленные подписки
      Базы данныхarrow
    • Получить список баз данныхПолучить информацию о базе данныхПолучить информацию о полях базы данныхОчистка базы данных для тестированияПолучить статистику по базе данныхОбновить статистику по базе данных
      Ресурсыarrow
    • Получить список ресурсовПолучить информацию о ресурсеПолучить информацию о полях подписки ресурсаПолучить статистику по ресурсамОбновить статистику по ресурсам
      Сегментыarrow
    • Добавить сегментОбновить сегментПолучить информацию о сегментеПолучить список сегментовУдалить сегментПолучить статистику по сегментамОбновить статистику по сегментамДобавить или удалить профильПолучить данные профилей статического или обновляемого сегмента
      Стоп-спискиarrow
    • Добавить стоп-списокПереименовать стоп-списокПолучить информацию о стоп-спискеПолучить информацию о нескольких стоп-списковУдалить стоп-списокВыгрузить данные из стоп-списка в файл
        Добавление и удаление из стоп-спискаarrow
      • Проверить email-адрес в стоп-спискеДобавить email-адрес в стоп-списокДобавить один или несколько email-адресов в стоп-списокУдалить email-адрес из стоп-спискаУдалить все email-адреса из стоп-спискаПроверить домен в стоп-спискеДобавить домен в стоп-списокДобавить один или несколько доменов в стоп-списокУдалить домен из стоп-спискаУдалить все домены из стоп-спискаПроверить номер телефона в стоп-спискеДобавить номер телефона в стоп-списокДобавить один или несколько номеров в стоп-списокУдалить номер из стоп-спискаУдалить все номера из стоп-списка
      Шаблоныarrow
    • Получить список шаблоновПолучить информацию о шаблонеУдалить шаблонДобавить шаблон сообщенияОбновить шаблон сообщенияChannel object
      Рассылкиarrow
    • Получить список рассылокПолучить информацию о рассылкеПолучить лог рассылкиКлонировать рассылкуУдалить рассылкуАктивировать рассылкуДеактивировать рассылкуПолучить статус рассылки
        Броадкаст рассылкиarrow
      • Получить список броадкаст рассылокПолучить информацию о броадкаст рассылкеДобавить броадкаст рассылкуОбновить броадкаст рассылкуЗапустить броадкаст рассылку
        Регулярные рассылкиarrow
      • Получить список регулярных рассылокПолучить информацию о регулярной рассылкеДобавить регулярную рассылкуОбновить регулярную рассылкуЗапустить регулярную рассылку
        Триггерыarrow
      • Получить список триггерных рассылокПолучить информацию о триггерной рассылкеДобавить триггерную рассылкуОбновить триггерную рассылкуЗапуск триггерной рассылки (API call)Импорт профиля + Отправка триггераЗадание на массовую отправку триггераЗадание на массовый импорт профилей + отправка триггераМассовая отправка триггераМассовый импорт профилей + отправка триггераКлонировать триггер рассылкуData array
      Кампанииarrow
    • Получить информацию о кампанииПолучить список кампанийАктивация кампанииЗавершение кампанииДеактивация кампанииПолучить статус кампании
      Сценарии (цепочки)arrow
    • Отправить профиль клиента в сценарийОдновременный импорт и запуск профиля в сценарийМассовый импорт и запуск профилей в сценарийЗадание на массовый импорт и запуск профилей в сценарийПолучить список сценариевАктивировать сценарийДеактивировать сценарийПолучить информацию о сценарииИзменить приоритет сценария
      Промокодыarrow
    • Импортировать промокодыПолучить информацию о промокодеАктивировать промокодОбновить промокодПривязать промокод к профилюОтвязать промокод от профиляПолучить все промокоды
      Программы лояльностиarrow
    • Получить уровень профиля в программе лояльностиЭкспорт транзакций балловСгораемые баллы за периодПолучение транзакций по счёту профиляПолучение списка триггерных промоакцийНачисление баллов участникуСписание баллов участникаПодтверждение временной транзакцииПредварительный расчет заказаПодтверждение заказаОтмена временной транзакцииОтмена балльной транзакцииПолучение баланса балльного счётаРегистрация участника в программе лояльностиМассовая регистрация участников в программу лояльностиЗадание на массовое добавление участников в программу лояльностиУдаление участника из программы лояльности
      Формыarrow
    • Получить информацию о формеПолучение списка формЭкспорт данных заполнения формы по пользователюЭкспорт данных заполнений формыОпубликовать формуСнять форму с публикацииУдалить форму
      Целиarrow
    • Регистрация события достижения цели
      Пуши приложенийarrow
    • Обработка и добавление подпискиДобавить события с app push
      Маркетarrow
      • Объекты маркетаarrow
      • Структура заказа (order data object)Product data objectСтруктура SKU (SKU data object)Категории (categories array)Custom fields array
        Заказыarrow
      • Импорт заказа и статусов позицийПолучить список заказовУдалить заказПолучить статус заказаИзменение статуса позиции заказа
        Продукты и SKUarrow
      • Импорт продуктов, SKU и категорийПолучение списка продуктовПолучение списка SKUИмпорт SKU и категорийУдалить продуктыУдалить SKU
      Отчеты и статистикаarrow
    • Получить сводный отчетПолучить отчет о возвратахПолучить отчет о недоставках
      Сендерыarrow
    • Получить список сендеров
        Виртуальные сендерыarrow
      • Получить список виртуальных сендеровПолучить информацию о виртуальном сендереКлонировать виртуальный сендерДобавить виртуальный сендерОбновить виртуальный сендерУдалить виртуальный сендер
      Объектыarrow
    • AKMTA objectContent objectCustom channels rules objectEmail rule objectFile objectProfile data objectSMS rule objectSender objectSender typesStart schedule objectSubscription objectTrigger types
      Запросы к внешним базам данныхarrow
      • Запросы сегментацииarrow
      • Добавить запрос сегментацииОбновить запрос сегментацииПолучить информацию о запросе сегментацииПолучить список запросов на сегментациюУдалить запрос сегментации
        Запросы для шаблоновarrow
      • Добавить запрос для шаблоновОбновить запрос для шаблоновПолучить информацию о запросе для шаблоновПолучить список запросов для шаблоновУдалить запрос для шаблонов
      Прочееarrow
    • Загрузить файлПолучить веб-версию сообщенияPush провайдерыДедупликация запросовРабота с API через RabbitMQСписок гендерных идентификацийПолучить допустимые значения полей browsers, devices, tz, oses, languages
    Список API-методовИмпорт и настройка коллекции API-методов в Postman
      SDKarrow
      • mSDKarrow
        • Androidarrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDK
            Настройка провайдеровarrow
          • Firebase Cloud MessagingHuawei Mobile ServicesRuStore
          iOSarrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDK
            Настройка провайдеровarrow
          • Apple Push Notification ServiceFirebase Cloud MessagingHuawei Mobile Services
          React Native (Android/iOS)arrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDKНастройка провайдеров
          Flutter (Android/iOS)arrow
        • Быстрый стартКонфигурация SDKФункционал SDKПубличный API SDKНастройка провайдеров
        Работа с ролевым и JWT-токеном
      Web Push SDK
  • SDK
  • mSDK
  • iOS
  • Публичный API SDK

Публичный API SDK

SDK собран из модулей: обязательного Core и опциональных Push, Target, Profile, In-App. Каждый модуль подключается отдельной зависимостью и открывается через соответствующее свойство объекта AltcraftSDK.shared:

AltcraftSDK.shared     // Core: инициализация, аутентификация, события, очистка
AltcraftSDK.shared.authFunctions // Core: аутентификация пользователя
AltcraftSDK.shared.push // Push: подписки, токены, уведомления
AltcraftSDK.shared.target // Target: отправка целей
AltcraftSDK.shared.profile // Profile: поля профиля
AltcraftSDK.shared.inApp // In-App: кампании и подписки

Core (обязательный модуль)​

class AltcraftSDK
AltcraftSDK
// Синглтон — точка входа в SDK
├─ static let shared: AltcraftSDK
// Инициализация SDK и установка конфигурации (completion вызывается на main)
├─ func initialization(
│ configuration: AltcraftConfiguration?,
│ completion: (@Sendable (Bool) -> Void)? = nil
│ ): Void
// Полная очистка данных SDK (кэш, БД, настройки), затем вызов completion
├─ func clear(completion: (() -> Void)? = nil): Void
// Установка App Group и инициализация Core Data под shared-контейнер
├─ func setAppGroup(groupName: String?): Void
// Регистрация JWT-провайдера для получения токенов
├─ public func setJWTProvider(provider: JWTInterface): Void
// Полная очистка данных SDK (кэш/БД/настройки), затем вызов completion
├─ public func clear(completion: (() -> Void)? = nil): Void
|
// Поток SDK-событий (один активный подписчик)
├─ public let eventSDKFunctions: SDKEvents
│ // Подписаться на события SDK (заменяет существующего подписчика)
│ ├─ func subscribe(callback: @escaping (Event) -> Void): Void
│ // Отписаться от событий (колбэк остаётся назначенным, доставка останавливается)
│ ├─ func unsubscribe(): Void
│ // Модель события (базовый тип для всех событий/ошибок)
│ ├─ Event
│ │ // Базовая модель события
│ │ id: UUID
│ │ function: String
│ │ message: String?
│ │ eventCode: Int?
│ │ value: [String: Any?]?
│ │ date: Date
│ │ // Конструктор (нормализация function, фильтрация nil в value)
│ │ init(function: String, message: String? = nil, eventCode: Int? = nil, value: [String: Any?]? = nil, date: Date = Date())
│ │ // Сравнение по уникальному id
│ │ static func ==(lhs: Event, rhs: Event) -> Bool
│ │ // Хеширование по id
│ │ func hash(into hasher: inout Hasher): Void
│ │
│ │ // Ошибки без повторов (4xx-класс)
│ │ ErrorEvent : Event
│ │ init(function: String, message: String? = nil, eventCode: Int? = nil, value: [String: Any?]? = nil, date: Date = Date())
│ │
│ │ // Повторяемые ошибки (обычно 5xx)
│ │ RetryEvent : ErrorEvent
│ │ init(function: String, message: String? = nil, eventCode: Int? = 0, value: [String: Any?]? = nil, date: Date = Date())
|
// Управление push-токенами и провайдерами (FCM/HMS/APNs)
├─ public let pushTokenFunctions: PublicPushTokenFunctions
│ // Установить провайдера Firebase Cloud Messaging (nil — снять)
│ ├─ public func setFCMTokenProvider(_ provider: FCMInterface?): Void
│ // Установить провайдера Huawei Mobile Services (nil — снять)
│ ├─ public func setHMSTokenProvider(_ provider: HMSInterface?): Void
│ // Установить провайдера Apple Push Notification service (nil — снять)
│ ├─ public func setAPNSTokenProvider(_ provider: APNSInterface?): Void
│ // Асинхронно получить текущий push-токен (completion опционален)
│ ├─ public func getPushToken(completion: ((TokenData?) -> Void)? = nil): Void
│ // Сохранить токен вручную (String для FCM/HMS, Data для APNs); provider: "ios-firebase" | "ios-huawei" | "ios-apns"
│ ├─ public func setPushToken(provider: String, pushToken: Any?): Void
│ // Применить новый приоритет провайдеров и инициировать обновление токена
│ ├─ public func changePushProviderPriorityList(_ list: [String]): Void
│ // Удалить токен выбранного провайдера и вызвать completion
│ ├─ public func deleteDeviceToken(provider: String, completion: @escaping () -> Void): Void
│ // Форсировать обновление токена (определить провайдера —> удалить (кроме APNs) —> запросить новый)
│ └─ public func forcedTokenUpdate(completion: (() -> Void)? = nil): Void
|
// Управление подпиской на push (изменение статуса, запросы статуса)
├─ public let pushSubscriptionFunctions: PublicPushSubscriptionFunctions
│ // Оформить подписку (status = SUBSCRIBED)
│ ├─ public func pushSubscribe(
│ │ sync: Bool = true,
│ │ profileFields: [String: Any?]? = nil,
│ │ customFields: [String: Any?]? = nil,
│ │ cats: [CategoryData]? = nil,
│ │ replace: Bool? = nil,
│ │ skipTriggers: Bool? = nil
│ │ ): Void
│ // Отписаться (status = UNSUBSCRIBED)
│ ├─ public func pushUnSubscribe(
│ │ sync: Bool = true,
│ │ profileFields: [String: Any?]? = nil,
│ │ customFields: [String: Any?]? = nil,
│ │ cats: [CategoryData]? = nil,
│ │ replace: Bool? = nil,
│ │ skipTriggers: Bool? = nil
│ │ ): Void
│ // Приостановить (status = SUSPENDED)
│ ├─ public func pushSuspend(
│ │ sync: Bool = true,
│ │ profileFields: [String: Any?]? = nil,
│ │ customFields: [String: Any?]? = nil,
│ │ cats: [CategoryData]? = nil,
│ │ replace: Bool? = nil,
│ │ skipTriggers: Bool? = nil
│ │ ): Void
│ // UnSuspend подписки (один запрос, без ретраев/персиста)
│ ├─ public func unSuspendPushSubscription(
│ │ completion: @escaping (ResponseWithHttp?) -> Void
│ │ ): Void
│ // Статус последней подписки профиля
│ ├─ public func getStatusOfLatestSubscription(
│ │ completion: @escaping (ResponseWithHttp?) -> Void
│ │ ): Void
│ // Статус подписки, соответствующий текущим токену/провайдеру
│ ├─ public func getStatusForCurrentSubscription(
│ │ completion: @escaping (ResponseWithHttp?) -> Void
│ │ ): Void
│ // Статус последней подписки по провайдеру (если nil — используется текущий)
│ └─ public func getStatusOfLatestSubscriptionForProvider(
│ │ provider: String? = nil,
│ │ completion: @escaping (ResponseWithHttp?) -> Void
│ │ ): Void
| // добавить функциональное поле профиля(set/incr/...)
| └─ public func actionField(key: String) -> ActionFieldBuilder
|
| // Регистрация мобильных событий
├─ public let mobileEventFunctions: PublicMobileEventFunctions
│ // Регистрирует мобильное событие Altcraft
│ └─ public func mobileEvent(
│ sid: String,
│ altcraftClientID: String = "",
│ eventName: String,
│ sendMessageId: String? = nil,
│ payload: [String: Any?]? = nil,
│ matching: [String: Any?]? = nil,
│ matchingType: String? = nil,
│ profileFields: [String: Any?]? = nil,
│ subscription: (any Subscription)? = nil,
│ utm: UTM? = nil
│ ): Void
|
| // Обновление полей профиля
├─ public let profileFunctions: PublicProfileFunctions
│ // Обновляет поля профиля Altcraft
│ └─ public func updateProfileFields(
│ profileFields: [String: Any?]? = nil,
│ skipTriggers: Bool? = nil
│ ): Void
|
// ручная отправка пуш-событий (delivery/open)
├─ public let pushEventFunctions: PublicPushEventFunctions
│ // Зафиксировать доставку Altcraft-push (вызывает delivery-эвент)
│ ├─ public func deliveryEvent(from request: UNNotificationRequest): Void
│ // Зафиксировать открытие Altcraft-push (вызывает open-эвент)
│ └─ public func openEvent(from request: UNNotificationRequest): Void
|
├─ func setJWTProvider(provider: JWTInterface): Void
// Доступ к событиям SDK (один подписчик)
├─ let eventSDKFunctions: SDKEvents
// Доступ к аутентификации пользователя
├─ let authFunctions: AuthAPI
// Регистрация периодических фоновых задач (BGAppRefreshTask)
├─ let backgroundTasks: BackgroundTask
// Доступ к опциональным модулям
├─ var push: Push
├─ var target: Target
├─ var profile: Profile
└─ var inApp: InApp
class AuthAPI
AuthAPI
// Аутентификация пользователя
├─ func authenticate(): Void
// Выход пользователя (восстановление анонимной сессии)
└─ func logOut(): Void
class SDKEvents
SDKEvents
// Подписаться на события SDK (заменяет существующего подписчика)
├─ func subscribe(callback: @escaping (Event) -> Void): Void
// Отписаться от событий SDK
└─ func unsubscribe(): Void
CoreEvents — публичные события Core-модуля
CoreEvents
// Общие события SDK
├─ configSet // SDK configuration is installed
├─ sdkCleared // SDK data has been cleared
├─ userLogOut // User logged out. Anonymous session started
├─ backgroundTaskRegister // SDK background task is registered
├─ backgroundTaskCompleted // SDK background task completed
// Ошибки состояния и окружения
├─ notAuthenticatedError // user is not authenticated
├─ appGroupIsNotSet // App Group name was not set
├─ coreDataError // error in CoreData. Re-initialize the SDK
├─ permissionDenied // notification permission denied
// Ошибки конфигурации
├─ invalidUrlValue // invalid apiUrl value - empty or null
├─ invalidRTokenValue // invalid resource token value - resource token is empty
├─ unsupportedSubscriptionType // unsupported subscription type
// Ошибки аутентификации
├─ jwtIsNil // JWT token is nil
├─ jwtParsingError // JWT parsing error
// Успешные / неудачные API-запросы
├─ authenticateSuccessful // successful request: profile/authenticate
└─ authenticateFailed // failed request: profile/authenticate
class AltcraftConfiguration
AltcraftConfiguration
// Класс конфигурации Altcraft SDK: URL API, ресурсный токен, сведения о
// приложении, флаг логов и конфигурации опциональных модулей.
// Создаётся только через Builder. ObjC-совместим:
// AltcraftConfiguration / AltcraftConfiguration_Builder.
├─ @objc(AltcraftConfiguration_Builder) public final class Builder
│ // Задать API URL (обязательный параметр)
│ ├─ @discardableResult func setApiUrl(_ url: String) -> Builder
│ // Задать ресурсный токен (опционально)
│ ├─ @discardableResult func setRToken(_ rToken: String?) -> Builder
│ // Задать метаданные приложения (Swift-модель AppInfo) (опционально)
│ ├─ @discardableResult func setAppInfo(_ info: AppInfo?) -> Builder
│ // Включить/выключить ведение логов (опционально)
│ ├─ @discardableResult func setEnableLogging(_ enabled: Bool?) -> Builder
│ // Добавить конфигурацию опционального модуля (повторный вызов для того же
│ // модуля заменяет предыдущую конфигурацию)
│ ├─ @discardableResult func addModuleConfiguration(
│ │ _ configuration: any ModuleConfiguration
│ │ ) -> Builder
│ // Построить валидную конфигурацию (nil, если валидация не пройдена)
│ └─ func build() -> AltcraftConfiguration?
// Доступ к параметрам конфигурации
├─ func getApiUrl() -> String
├─ func getRToken() -> String?
├─ func getAppInfo() -> AppInfo?
└─ func getEnableLogging() -> Bool?

Push (опциональный модуль)​

enum Push
Push
// Доступ к API push-токенов
├─ var token: TokenAPI
// Доступ к API push-подписок и статусов
├─ var subscription: SubscriptionAPI
// Доступ к событиям push (доставка, открытие)
├─ var event: EventAPI
// Доступ к приёму и обработке push-уведомлений
├─ var notificationManager: NotificationManager
// Типы событий Push-модуля
└─ var moduleEvents: PushModuleEvents.Type
class AltcraftNSE — обработка push в Notification Service Extension
// Используется внутри Notification Service Extension (NSE) — отвечает за обработку
// push-уведомлений Altcraft, определение уведомлений Altcraft и регистрацию целей
// без зависимости от UIApplication
AltcraftNSE
// Общий (singleton) экземпляр для централизованной логики NSE
├─ static let shared: AltcraftNSE
// Доступ к API регистрации целей
├─ let target: TargetAPI
// Доступ к API обновления полей профиля
├─ let profile: UpdateAPI
// Проверка, относится ли уведомление к Altcraft
├─ func isAltcraftPush(_ request: UNNotificationRequest) -> Bool
// Обработка входящего уведомления Altcraft: передача изменённого содержимого в contentHandler
├─ func handleNotificationRequest(
│ request: UNNotificationRequest,
│ contentHandler: @escaping (UNNotificationContent) -> Void
│ ): Void
// Вызывается системой при истечении времени работы NSE
├─ func serviceExtensionTimeWillExpire(): Void
// Установка App Group и инициализация общего контейнера данных
├─ func setAppGroup(groupName: String?): Void
// Регистрация JWT-провайдера
└─ func setJWTProvider(provider: JWTInterface): Void
class TokenAPI
TokenAPI
// Зарегистрировать провайдера Apple Push Notification service (nil — снять)
├─ func setAPNSTokenProvider(_ provider: APNSInterface?): Void
// Зарегистрировать провайдера Firebase Cloud Messaging (nil — снять)
├─ func setFCMTokenProvider(_ provider: FCMInterface?): Void
// Зарегистрировать провайдера Huawei Mobile Services (nil — снять)
├─ func setHMSTokenProvider(_ provider: HMSInterface?): Void
// Получить текущий токен устройства (completion опционален)
├─ func getPushToken(completion: ((TokenData?) -> Void)? = nil): Void
// Сохранить токен провайдера вручную
├─ func setPushToken(provider: String, pushToken: Any?): Void
// Изменить приоритет провайдеров и обновить токен
├─ func changePushPriorityList(_ list: [String]): Void
// Удалить токен выбранного провайдера
├─ func deleteDeviceToken(provider: String, completion: (() -> Void)? = nil): Void
// Форс-обновление токена (удалить —> обновить)
└─ func forcedTokenUpdate(completion: (() -> Void)? = nil): Void
class SubscriptionAPI
SubscriptionAPI
// Подписка на push-уведомление (status = SUBSCRIBED)
├─ func pushSubscribe(
│ sync: Bool = true,
│ profileFields: [String: Any?]? = nil,
│ customFields: [String: Any?]? = nil,
│ cats: [CategoryData]? = nil,
│ replace: Bool? = nil,
│ skipTriggers: Bool? = nil
│ ): Void
// Приостановка подписки на push-уведомления (status = SUSPENDED)
├─ func pushSuspend(
│ sync: Bool = true,
│ profileFields: [String: Any?]? = nil,
│ customFields: [String: Any?]? = nil,
│ cats: [CategoryData]? = nil,
│ replace: Bool? = nil,
│ skipTriggers: Bool? = nil
│ ): Void
// Отписка от push-уведомлений (status = UNSUBSCRIBED)
├─ func pushUnSubscribe(
│ sync: Bool = true,
│ profileFields: [String: Any?]? = nil,
│ customFields: [String: Any?]? = nil,
│ cats: [CategoryData]? = nil,
│ replace: Bool? = nil,
│ skipTriggers: Bool? = nil
│ ): Void
// Смена статуса подписки указанной в JWT с suspended на subscribed, остальные
// подписки, содержащие указанный push-токен, сменят статус с subscribed на suspended
├─ func unSuspendPushSubscription(
│ completion: @escaping (ResponseWithHttpCode<ResponseWithProfile>?) -> Void
│ ): Void
// Статус последней подписки профиля
├─ func getStatusOfLatestSubscription(
│ completion: @escaping (ResponseWithHttpCode<ResponseWithProfile>?) -> Void
│ ): Void
// Статус подписки с текущим токеном устройства
├─ func getStatusForCurrentSubscription(
│ completion: @escaping (ResponseWithHttpCode<ResponseWithProfile>?) -> Void
│ ): Void
// Статус последней подписки профиля по указанному провайдеру push-уведомлений
├─ func getStatusOfLatestSubscriptionForProvider(
│ provider: String? = nil,
│ completion: @escaping (ResponseWithHttpCode<ResponseWithProfile>?) -> Void
│ ): Void
// Добавить функциональное поле профиля (set/incr/...)
└─ func actionField(key: String) -> ActionFieldBuilder
class EventAPI
EventAPI
// Зафиксировать доставку Altcraft-push (вызывает delivery-ивент)
├─ func deliveryEvent(from request: UNNotificationRequest): Void
// Зафиксировать открытие Altcraft-push (вызывает open-ивент)
└─ func openEvent(from request: UNNotificationRequest): Void
class NotificationManager
// Менеджер входящих push-уведомлений: регистрация, показ, обработка клика
NotificationManager
// Синглтон (точка доступа)
├─ static let shared: NotificationManager
// Регистрация на push (delegate + requestAuthorization + registerForRemoteNotifications)
├─ func registerForPushNotifications(
│ for application: UIApplication,
│ completion: ((_ granted: Bool, _ error: Error?) -> Void)? = nil
│ ): Void
// Управление обработкой push-уведомлений в foreground (true — приложению)
├─ var customPushProcessing: Bool
// Управление обработкой кликов по уведомлениям (true — приложению)
├─ var customClickProcessing: Bool
// Колбэк для кастомной обработки уведомления в foreground
├─ var onForegroundNotification: (
│ (UNNotification, @escaping (UNNotificationPresentationOptions) -> Void) -> Void
│ )?
// Колбэк для кастомной обработки клика по уведомлению
├─ var onNotificationClick: (
│ (UNNotificationResponse, @escaping () -> Void) -> Void
│ )?
// События NotificationCenter, публикуемые SDK
├─ Notification.Name.altcraftPushWillPresent // уведомление показывается в foreground
└─ Notification.Name.altcraftPushDidReceive // нажатие на уведомление / action
class PushConfiguration
// Конфигурация push-модуля. Добавляется в Builder вызовом pushConfig().
└─ class PushConfiguration(
icon: String? = nil, // Имя кастомной иконки уведомлений (опционально)
providerPriority: [String] = [], // Приоритет провайдеров push-уведомлений (опционально)
pushReceiverModules: [String] = [], // Префиксы пакетов с кастомными receivers (опционально)
pushChannelName: String? = nil, // Имя канала push-уведомлений (опционально)
pushChannelDescription: String? = nil // Описание канала push-уведомлений (опционально)
)
// Расширение для добавления конфигурации Push в главный билдер
└─ func AltcraftConfiguration.Builder.pushConfig(_ configuration: PushConfiguration) -> Self

Target (опциональный модуль)​

enum Target
Target
// Доступ к API регистрации целей
├─ var event: TargetAPI
// Типы событий Target-модуля
└─ var moduleEvents: TargetModuleEvents.Type
class TargetAPI
TargetAPI
// Отправить цель (target-событие) на сервер
└─ func mobileEvent(
sid: String,
altcraftClientID: String = "",
eventName: String,
sendMessageId: String? = nil,
payload: [String: Any?]? = nil,
matching: [String: Any?]? = nil,
matchingType: String? = nil,
profileFields: [String: Any?]? = nil,
subscription: (any Subscription)? = nil,
utm: UTM? = nil
): Void

Profile (опциональный модуль)​

enum Profile
Profile
// Доступ к API обновления полей профиля
├─ var update: UpdateAPI
// Типы событий Profile-модуля
└─ var moduleEvents: ProfileModuleEvents.Type
class UpdateAPI
UpdateAPI
// Обновить поля профиля
└─ func updateProfileFields(
profileFields: [String: Any?]? = nil,
skipTriggers: Bool? = nil
): Void

In-App (опциональный модуль)​

enum InApp
InApp
// Подписка на жизненный цикл приложения для автоматического показа In-App
├─ func registerLifecycleTracking(): Void
// Установить маркер текущего экрана (используется при фильтрации In-App уведомлений)
├─ func setScreen(screen: String): Void
// Триггер кастомной In-App кампании по имени
├─ func trigger(name: String): Void
// Запрос доступных In-App placements
├─ func getPlacements(): Void
// Настроить анимацию In-App уведомления
├─ func setAnimation(
│ _ block: @escaping @MainActor (InAppAnimator) -> Void
│ ): Void
// Управление подписками на In-App уведомления
├─ var subscription: SubscribeAPI
// Типы событий In-App-модуля
└─ var moduleEvents: InAppModuleEvents.Type
class SubscribeAPI (In-App)
SubscribeAPI
// Подписка на In-App уведомления (status = SUBSCRIBED)
├─ func inAppSubscribe(
│ sync: Bool = true,
│ profileFields: [String: Any?]? = nil,
│ customFields: [String: Any?]? = nil,
│ cats: [CategoryData]? = nil,
│ replace: Bool? = nil,
│ skipTriggers: Bool? = nil
│ ): Void
// Отписка от In-App уведомлений (status = UNSUBSCRIBED)
├─ func inAppUnSubscribe(
│ sync: Bool = true,
│ profileFields: [String: Any?]? = nil,
│ customFields: [String: Any?]? = nil,
│ cats: [CategoryData]? = nil,
│ replace: Bool? = nil,
│ skipTriggers: Bool? = nil
│ ): Void
// Статус подписки на In-App уведомления
└─ func getInAppSubscriptionStatus(
completion: @escaping (ResponseWithHttpCode<ResponseWithProfile>?) -> Void
): Void
class InAppEmitter
// Вывод In-App кампаний с типом содержимого "json" для внешнего подписчика
InAppEmitter
// Синглтон
├─ static let shared: InAppEmitter
// Подписаться на JSON In-App кампаний (заменяет существующего подписчика)
├─ func subscribe(callback: @escaping (String) -> Void): Void
// Отписаться от JSON In-App кампаний
└─ func unsubscribe(): Void
protocol InAppAnimator
InAppAnimator
// Идентификатор размещения, к которому относится аниматор
├─ var companyId: Int { get }
// Применить блок к In-App view мгновенно, без запуска анимации
├─ @MainActor func prepare(_ block: (UIView) -> Void): Void
// Настроить и запустить UIKit-анимацию для In-App view
└─ @MainActor func animate(
duration: TimeInterval,
delay: TimeInterval,
options: UIView.AnimationOptions,
animations: @escaping (UIView) -> Void,
completion: ((Bool) -> Void)?
): Void
class InAppConfiguration
// Конфигурация In-App модуля. Добавляется в Builder вызовом inAppConfig().
└─ class InAppConfiguration(
inAppAutoRequest: Bool = true // Автоматический запрос In-App placements (опционально)
)
// Расширение для добавления конфигурации In-App в главный билдер
└─ func AltcraftConfiguration.Builder.inAppConfig(_ configuration: InAppConfiguration) -> Self

Модели данных​

Event Classes
Event
// Базовое событие SDK (универсальная телеметрия)
public let id: UUID
public let function: String
public let event: SDKEvent?
public let message: String?
public let value: [String: Any]?
public let date: Date

ErrorEvent
// Ошибка SDK, наследует Event (ошибки без автоматического повтора)

RetryEvent
// Ошибка запроса, для которого предусмотрен автоматический повтор
// и выполнение на стороне SDK, наследует ErrorEvent
Data Classes (Core)
// Метаданные приложения для аналитики (если используется)
public struct AppInfo: Codable {
public var appID: String
public var appIID: String
public var appVer: String
}

// Обёртка ответа API вместе с HTTP-кодом
public struct ResponseWithHttpCode<T: ResponseData & Sendable> {
public let httpCode: Int?
public let response: T?
}

// Ответ запроса, содержащий данные профиля
public struct ResponseWithProfile: Codable {
public let error: Int?
public let errorText: String?
public let profile: ProfileData?
}

// Данные профиля пользователя
public struct ProfileData: Codable {
public let id: String?
public let status: String?
public let acid: String?
public let isTest: Bool?
public let subscription: SubscriptionData?
}

// Текущая подписка профиля
public struct SubscriptionData: Codable {
public let subscriptionId: String?
public let hashId: String?
public let provider: String?
public let status: String?
public let fields: [String: JSONValue]?
public let cats: [CategoryData]?
}

// Категория подписки (имя, заголовок, флаги)
public struct CategoryData: Codable {
public var name: String?
public var title: String?
public var steady: Bool?
public var active: Bool?
}
Data Classes (Push)
// Токен push-провайдера устройства
public struct TokenData: Codable {
public let provider: String
public let token: String
}
Data Classes (Target)
// Контейнер UTM-параметров для атрибуции целей (все поля опциональны)
public struct UTM: Codable {
public let campaign: String?
public let content: String?
public let keyword: String?
public let medium: String?
public let source: String?
public let temp: String?
}

// Базовый протокол всех типов подписок, добавляемых целью
public protocol Subscription {}

// Подписка на канал Email
public struct EmailSubscription: Subscription, Codable {
public let resourceId: Int
public let email: String
public let status: String?
public let priority: Int?
public let customFields: [String: JSONValue]?
public let cats: [String]?
public let channel: String = "email"
}

// Подписка на канал SMS
public struct SmsSubscription: Subscription, Codable {
public let resourceId: Int
public let phone: String
public let status: String?
public let priority: Int?
public let customFields: [String: JSONValue]?
public let cats: [String]?
public let channel: String = "sms"
}

// Подписка на push-канал
public struct PushSubscription: Subscription, Codable {
public let resourceId: Int
public let provider: String
public let subscriptionId: String
public let status: String?
public let priority: Int?
public let customFields: [String: JSONValue]?
public let cats: [String]?
public let channel: String = "push"
}

// Подписка с cc_data (Telegram, WhatsApp, Viber, Notify)
public struct CcDataSubscription: Subscription, Codable {
public let resourceId: Int
public let channel: String
public let ccData: [String: JSONValue]
public let status: String?
public let priority: Int?
public let customFields: [String: JSONValue]?
public let cats: [String]?
}

// Построитель функциональных операций (set/unset/incr/add/delete/upsert) над
// полем профиля. Результат — запись для словаря profileFields.
public struct ActionFieldBuilder {
public init(key: String)
public func set(value: Any?) -> [String: Any?]
public func unset(value: Any?) -> [String: Any?]
public func incr(value: Any?) -> [String: Any?]
public func add(value: Any?) -> [String: Any?]
public func delete(value: Any?) -> [String: Any?]
public func upsert(value: Any?) -> [String: Any?]
}
Constants
// Константы push-модуля
└─ enum PushConstants
// Провайдеры push-уведомлений
├─ enum ProviderName
│ ├─ static let apns = "ios-apns"
│ ├─ static let firebase = "ios-firebase"
│ └─ static let huawei = "ios-huawei"
// Типы событий push_event
├─ enum PushEvents
│ ├─ static let delivery = "delivery"
│ └─ static let open = "open"
Interfaces

JWTInterface (Core):

JWTInterface
// Доступ к текущему JWT
└─ func getToken() -> String?
// Возвращает текущий JWT или nil

APNSInterface (Push):

APNSInterface
// Контракт получения APNs-токена
└─ func getToken(completion: @escaping (String?) -> Void)
// Возвращает APNs-токен через completion или nil

FCMInterface (Push):

FCMInterface
// Контракт операций с FCM-токеном (получение/отзыв)
├─ func getToken(completion: @escaping (String?) -> Void)
│ // Возвращает FCM-токен через completion или nil
└─ func deleteToken(completion: @escaping (Bool) -> Void)
// Удаляет FCM-токен; completion(true|false)

HMSInterface (Push):

HMSInterface
// Контракт операций с HMS-токеном
├─ func getToken(completion: @escaping (String?) -> Void)
│ // Возвращает HMS-токен через completion или nil
└─ func deleteToken(completion: @escaping (Bool) -> Void)
// Удаляет HMS-токен; completion(true|false)

Subscription (Target):

Subscription (protocol)
// Базовый протокол для всех типов подписок, передаваемых с целью.
// Полиморфная сериализация, поле-дискриминатор — channel.
Последнее обновление 28 сент. 2026 г.
Предыдущая страница
Функционал SDK
Следующая страница
Настройка провайдеров
  • Core (обязательный модуль)
  • Push (опциональный модуль)
  • Target (опциональный модуль)
  • Profile (опциональный модуль)
  • In-App (опциональный модуль)
  • Модели данных
© 2015 - 2026 Altcraft. Все права защищены.