Функции и классы
Публичные классы
Список публичных классов SDK
class AltcraftSDK
AltcraftSDK
// Синглтон точка входа в SDK
├─ public static let shared: AltcraftSDK
// Инициализация SDK конфигурацией (completion вызывается на main)
├─ public func initialization(configuration: AltcraftConfiguration?, completion: ((Bool) -> Void)? = nil): Void
// Установка App Group и инициализация Core Data под shared-контейнер
├─ public 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 pushTokenFunction: 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
|
// ручная отправка пуш-событий (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
|
// Регистрация периодических фоновых задач (BGAppRefreshTask)
├─ public let backgroundTasks: BackgroundTasks
│ // Зарегистрировать задачу и запланировать периодический запуск (~каждые 3 часа)
│ └─ public func registerBackgroundTask(): Void
|
// Управление нотификациями в приложении (делегат центра уведомлений)
├─ public let notificationManager: NotificationManager
// Назначить делегата, запросить разрешения и зарегистрироваться на remote notifications; completion вернёт granted/error
├─ func registerForPushNotifications(for application: UIApplication, completion: ((_ granted: Bool, _ error: Error?) -> Void)? = nil): Void
// Показ уведомлений в форграунде (баннер/алерт + бейдж/звук)
├─ public func userNotificationCenter(
│ _ center: UNUserNotificationCenter,
│ willPresent notification: UNNotification,
│ withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
│ ): Void
// Обработка взаимодействия пользователя (клик/действия), логирование open-ивента
└─ public func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
): Void
class AltcraftPushReceiver
// Используется в Notification Service Extension (NSE) - обработка rich-пушей (категории/кнопки/медиа), без зависимостей на UIApplication
AltcraftPushReceiver
// Проверить, что пуш — от Altcraft (по маркеру в userInfo)
├─ public func isAltcraftPush(_ request: UNNotificationRequest) -> Bool
// Обработать входящий запрос: создать категории/кнопки, прикрепить медиа, зафиксировать delivery и отдать контент в NSE
├─ public func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void): Void
// Вернуть "лучший доступный" контент при таймауте NSE
└─ public func serviceExtensionTimeWillExpire(): Void
class AltcraftConfiguration
AltcraftConfiguration
// Класс конфигурации Altcraft SDK.
// Хранит базовый API URL и опциональные параметры (rToken, AppInfo, providerPriorityList).
// Создаётся только через Builder.
│
├─ public class Builder
│ // Builder для формирования конфигурации с валидацией.
│ // Позволяет задать обязательные и опциональные поля и собрать объект конфигурации.
│ // Конструктор билдера
│ ├─ public init(): Builder
│ // Задать API URL (обязательный параметр)
│ ├─ public func setApiUrl(_ url: String) -> Builder
│ // Задать ресурсный токен (опционально)
│ ├─ func setRToken(_ rToken: String?) -> Builder
│ // Задать метаданные приложения AppInfo используемые в Firebase Analytis
│ ├─ public public func setAppInfo(_ info: AppInfo?) -> Builder