Функционал SDK
Предварительно вам необходимо настроить SDK для работы с вашим приложением. Подробная инструкция находится здесь
SDK разделён на модули: core (авторизация, события), push, target (цели), profile и in-app. Каждый модуль подключается отдельной зависимостью и доступен через своё свойство объекта AltcraftSDK.shared — AltcraftSDK.shared.push, AltcraftSDK.shared.target, AltcraftSDK.shared.profile, AltcraftSDK.shared.inApp.
Core: авторизация
AltcraftSDK
└─ static let shared: AltcraftSDK
// Доступ к аутентификации пользователя
└─ let authFunctions: AuthAPI
// Аутентифицировать текущего пользователя SDK
├─ func authenticate(): Void
// Выйти из профиля (возврат к анонимной сессии)
└─ func logOut(): Void
Функции авторизации:
func authenticate()— аутентифицирует текущего пользователя: отправляет на сервер запрос с текущими данными аутентификации (JWT-токен или rToken) и привязывает устройство к профилю пользователя. После успешной аутентификации пользователь по лучает доступ к персонализированным In-App уведомлениям.func logOut()— завершает текущую сессию аутентификации и переводит устройство в анонимный режим. В анонимном режиме недоступны персонализированные In-App уведомления и управление подпиской.
Установка JWT-провайдера выполняется функцией AltcraftSDK.shared.setJWTProvider(provider:) (см. настройку SDK). Для работы без JWT используйте rToken из конфигурации.
Вызывайте authenticate() только тогда, когда пользователь действительно выполняет вход в приложение и известен для клиента (например, после успешной авторизации через форму логина, OAuth или другой механизм аутентификации вашего приложения). С logOut() — аналогично: только при реальном выходе пользователя.
Пример использования:
AltcraftSDK.shared.authFunctions.authenticate()
Очистка данных SDK
AltcraftSDK
// Полная очи стка данных SDK (кэш, БД, настройки), затем вызов completion
└── func clear(
completion: (() -> Void)? = nil
): Void
Функция выполняет полную очистку данных SDK: кэша, базы данных и локальных настроек. Необязательный параметр completion вызывается после завершения очистки.
Core: события SDK
// API событий SDK
AltcraftSDK
└── let eventSDKFunctions: SDKEvents
// Подписка на события SDK (заменяет существующего подписчика)
├── func subscribe(
│ callback: @escaping (Event) -> Void
│ ): Void
// Отписка от событий
└── func unsubscribe(): Void
В приложении может быть только один активный подписчик на события SDK.
Типы событий SDK:
- Event — общее событие (информация, успешные запросы);
- ErrorEvent — событие об ошибке;
- RetryEvent — событие об ошибке при выполнении запроса, для которого предусмотрен автоматический повтор на стороне SDK.
Каждое событие содержит поля:
- function — имя функции, вызвавшей событие;
- event — тип события SDK (
SDKEvent, список см. в таблице ниже); - message — сообщение события;
- value — дополнительные данные (
[String: Any]?), добавляемые к некоторым событиям; - date — время события.
Подписка на события
func subscribe(callback: @escaping (Event) -> Void): Void
Функция подписывает приложение на события SDK. При возникновении события SDK она вызывает переданный callback и передаёт в него экземпляр Event (или его наследника). Колбэк всегда вызывается на главном потоке.
Пример использования:
AltcraftSDK.shared.eventSDKFunctions.subscribe { event in
// Обработка события
}
Классы событий SDK
open class Event: NSObject {
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
}
// Ошибка без автоматического повтора
open class ErrorEvent: Event {}
// Ошибка запроса, для которого предусмотрен автоматический повтор
public final class RetryEvent: ErrorEvent {}
Отписка от событий
func unsubscribe(): Void
Отменяет доставку событий SDK. Подписчик остаётся назначенным, но события больше не передаются.
Пример использования:
AltcraftSDK.shared.eventSDKFunctions.unsubscribe()
Список всех событий SDK
Список событий по модулям
События SDK доступны через объекты модулей: CoreEvents (core), AltcraftSDK.shared.push.moduleEvents, AltcraftSDK.shared.target.moduleEvents, AltcraftSDK.shared.profile.moduleEvents, AltcraftSDK.shared.inApp.moduleEvents. Каждый элемент — значение перечисления со строковым сообщением (message).
Core:
| Значение | Сообщение |
|---|---|
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 |
authenticateSuccessful | successful request: profile/authenticate |
authenticateFailed | failed request: profile/authenticate |
Push:
| Значение | Сообщение |
|---|---|
pushProviderSet | push provider set: |
pushReceive | received Altcraft push notification. |
pushIsPosted | push is posted. |
pushSubscribeRequestSuccessful | successful request: push/subscribe |
pushSubscribeRequestFailed | failed request: push/subscribe |
pushSuspendRequestSuccessful | successful request: push/suspend |
pushSuspendRequestFailed | failed request: push/suspend |
pushUnsubscribeRequestSuccessful | successful request: push/unsubscribe |
pushUnsubscribeRequestFailed | failed request: push/unsubscribe |
tokenUpdateRequestSuccessful | successful request: push/update |
tokenUpdateRequestFailed | failed request: push/update |
pushStatusRequestSuccessful | successful request: push/status |
pushStatusRequestFailed | failed request: push/status |
unsuspendRequestSuccessful | successful request: push/unsuspend |
unsuspendRequestFailed | failed request: push/unsuspend |
pushEventRequestSuccessful | successful request: event/push |
pushEventRequestFailed | failed request: event/push |
invalidPushProviders | invalid provider. Available - ios-apns, ios-firebase, ios-huawei. |
apnsIsNotUpdated | forcing a push token update is not possible: the operation is not supported for APNs. |
Target:
| Значение | Сообщение |
|---|---|
mobileEventRequestSuccessful | successful request: event/post |
mobileEventRequestFailed | failed request: event/post |
Profile:
| Значение | Сообщение |
|---|---|
profileUpdateRequestSuccessful | successful request: profile/update |
profileUpdateRequestFailed | failed request: profile/update |
In-App:
| Значение | Сообщение |
|---|---|
inAppSubscribeRequestSuccessful | successful request: inapp/subscribe |
inAppSubscribeRequestFailed | failed request: inapp/subscribe |
inAppUnsubscribeRequestSuccessful | successful request: inapp/unsubscribe |
inAppUnsubscribeRequestFailed | failed request: inapp/unsubscribe |
inAppStatusRequestSuccessful | successful request: inapp/status |
inAppStatusRequestFailed | failed request: inapp/status |
inAppEventRequestSuccessful | successful request: inapp/event |
inAppEventRequestFailed | failed request: inapp/event |
inAppPlacementsRequestSuccessful | successful request: inapp/placements |
inAppPlacementsRequestFailed | failed request: inapp/placements |