Skip to main content
Documentation for version v73

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

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

Список публичных классов 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
│ // Задать приоритет провайдеров пуш-уведомлений (опционально)
│ ├─ public func setProviderPriorityList(_ list: [String]?) -> Builder
│ // Построить валидную конфигурацию (nil, если валидация не пройдена)
│ └─ public func build() -> AltcraftConfiguration?
// Доступ к параметрам конфигурации
├─ public func getApiUrl() -> String
├─ public func getRToken() -> String?
├─ public func getAppInfo() -> AppInfo?
└─ public func getProviderPriorityList() -> [String]?

Публичные структуры

Список публичных структур SDK
TokenData
// структура для хранения push-токена и имя провайдера (для UserDefaults).
provider: String // "ios-apns", "ios-firebase", "ios-huawei"
token: String

AppInfo
//Представляет базовые метаданные приложения, используемые в Firebase Analytics.
appID: String
appIID: String
appVer: String
├─ init(appID: String, appIID: String, appVer: String)

// Обёртка ответа API вместе с HTTP-кодом.
ResponseWithHttp
httpCode: Int?
response: Response?

// Ответ синхронного запроса на изменения и получения статуса подписок.
Response
error: Int?
errorText: String?
profile: ProfileData?

// Данные профиля пользователя.
ProfileData
id: String?
status: String?
isTest: Bool?
subscription: SubscriptionData?

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

// Описание категории подписки.
CategoryData
name: String?
title: String?
steady: Bool?
active: Bool?
├─ init(name: String?, title: String?, steady: Bool?, active: Bool?)

// Универсальное JSON-значение для произвольных полей.
JSONValue (enum)
cases:
- string(String)
- number(Double)
- bool(Bool)
- object([String: JSONValue])
- array([JSONValue])
- null
// Conformance: Codable (кастомное кодирование/декодирование).