Перейти к основному содержимому
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 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
  • Flutter (Android/iOS)
  • Публичный API SDK

Публичный API SDK

class AltcraftSDK

Точка входа в SDK. Все методы статические. JWT и push token provider регистрируются нативно (Application.onCreate на Android, AppDelegate на iOS) и не доступны через Dart API.

AltcraftSDK
// ---- Инициализация ----
├─ static Future<void> initialize(AltcraftConfig config)
├─ static Future<void> clear()
├─ static Future<bool> requestNotificationPermission()
└─ static void unlockInitialOperationsInThisSession()

// ---- Подписка на push ----
├─ static void pushSubscribe({bool? sync, ...})
├─ static void pushSuspend({bool? sync, ...})
├─ static void pushUnSubscribe({bool? sync, ...})
└─ static Future<ResponseWithHttpCode?> unSuspendPushSubscription()

// ---- Статус подписки ----
├─ static Future<ResponseWithHttpCode?> getStatusOfLatestSubscription()
├─ static Future<ResponseWithHttpCode?> getStatusForCurrentSubscription()
└─ static Future<ResponseWithHttpCode?> getStatusOfLatestSubscriptionForProvider(String? provider)

// ---- События SDK ----
├─ static Stream<SdkEvent> subscribeToEvents()
└─ static Future<void> unsubscribeFromEvents()

// ---- Мобильные события и профиль ----
├─ static void mobileEvent({required String sid, required String eventName, ...})
└─ static void updateProfileFields({Map<String, dynamic>? profileFields, bool? skipTriggers})

// ---- Push-токены ----
├─ static Future<TokenData?> getPushToken()
├─ static Future<void> setPushToken(String provider, String? token)
├─ static Future<void> forcedTokenUpdate()
├─ static Future<void> deleteDeviceToken(String provider)
└─ static Future<void> changePushProviderPriorityList(List<String> priorityList)

// ---- Push-уведомления (Android) ----
├─ static void takePush(Map<String, String> message)
├─ static Future<bool> isAltcraftPush(Map<String, String> message)
├─ static void deliveryEvent(Map<String, String>? message, String? messageUID)
└─ static void openEvent(Map<String, String>? message, String? messageUID)

// ---- Native storage (iOS / Android) ----
├─ static void setAppGroup(String? groupName)
└─ static void setUserDefaultsValue(String? suiteName, String key, dynamic value)

Инициализация​

initialize(config)

static Future<void> initialize(AltcraftConfig config)

Инициализирует Altcraft SDK с заданной конфигурацией. Вызывается один раз при старте приложения, до runApp().

ПараметрТипОписание
configAltcraftConfigОбъект конфигурации SDK (обязательный).

Возвращает: Future<void> — завершается, когда нативный SDK завершил инициализацию.

Выбрасывает: AltcraftException при ошибке инициализации на нативной стороне.

import 'package:altcraft_sdk/altcraft_sdk.dart';
import 'package:flutter/widgets.dart';

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();

await AltcraftSDK.initialize(
AltcraftConfig(
apiUrl: 'https://pxl-example.altcraft.com',
appInfo: const AppInfo(
appID: '1:000000000000:android:0000000000000000',
appIID: '00000000-0000-4000-8000-000000000000',
appVer: '1.0.0',
),
providerPriorityList: ['android-firebase'],
),
);

runApp(const MyApp());
}

clear()

static Future<void> clear()

Полная очистка данных SDK: локальная база данных, хранилище токенов, отмена всех фоновых задач.

Возвращает: Future<void>. Выбрасывает: AltcraftException при ошибке.

requestNotificationPermission()

static Future<bool> requestNotificationPermission()

Запрашивает разрешение на отправку уведомлений (Android 13+). На iOS разрешения настраиваются нативно.

Возвращает: Future<bool> — true, если разрешение предоставлено, false — если отказано.

final bool granted = await AltcraftSDK.requestNotificationPermission();

if (granted) {
AltcraftSDK.pushSubscribe(sync: true);
}

unlockInitialOperationsInThisSession()

static void unlockInitialOperationsInThisSession()

Разрешает переинициализацию push-модуля в текущей сессии (Android). Используется, когда требуется повторная инициализация push-компонентов без перезапуска приложения.


Подписка на push​

pushSubscribe() / pushSuspend() / pushUnSubscribe()

static void pushSubscribe({
bool? sync,
Map<String, dynamic>? profileFields,
Map<String, dynamic>? customFields,
List<dynamic>? cats,
bool? replace,
bool? skipTriggers,
})

static void pushSuspend({...})
static void pushUnSubscribe({...})
МетодСтатусКоды событий
pushSubscribe()subscribed230 (успех), 430 (ошибка), 530 (ретрай)
pushSuspend()suspended231 (успех), 431 (ошибка), 531 (ретрай)
pushUnSubscribe()unsubscribed232 (успех), 432 (ошибка), 532 (ретрай)

Все три метода имеют одинаковую сигнатуру.

ПараметрТипОписание
syncbool?true — синхронный запрос (результат через событие SDK). false — асинхронный.
profileFieldsMap<String, dynamic>?Поля профиля (системные и опциональные).
customFieldsMap<String, dynamic>?Пользовательские поля подписки (только скаляры).
catsList<dynamic>?Категории подписки (name + active).
replacebool?При true подписки других профилей с тем же push-токеном переводятся в unsubscribed.
skipTriggersbool?При true профиль игнорируется в триггерах рассылок и сценариев.

Возвращает: void (fire-and-forget). Результат доступен через события SDK.

AltcraftSDK.pushSubscribe(
sync: true,
profileFields: const {'_fname': 'Ivan', '_lname': 'Petrov'},
cats: const [{'name': 'news', 'active': true}],
);

unSuspendPushSubscription()

static Future<ResponseWithHttpCode?> unSuspendPushSubscription()

Возобновляет приостановленную подписку. Используется для LogIn/LogOut-переходов между профилями.

Алгоритм:

  1. Ищет подписки с тем же push-токеном, не относящиеся к профилю текущего JWT;
  2. Меняет их статус с subscribed на suspended;
  3. Меняет статус подписок профиля текущего JWT с suspended на subscribed;
  4. Возвращает данные профиля текущего JWT (или null, если профиль не найден).

Возвращает: Future<ResponseWithHttpCode?> — данные профиля или null.

final ResponseWithHttpCode? result =
await AltcraftSDK.unSuspendPushSubscription();

if (result == null) {
AltcraftSDK.pushSubscribe();
}

Статус подписки​

getStatusOfLatestSubscription()

static Future<ResponseWithHttpCode?> getStatusOfLatestSubscription()

Возвращает статус последней подписки профиля. response?.profile?.subscription содержит последнюю созданную подписку. Если подписок нет — null.

getStatusForCurrentSubscription()

static Future<ResponseWithHttpCode?> getStatusForCurrentSubscription()

Возвращает статус подписки для текущего push-токена и провайдера. response?.profile?.subscription содержит подписку, найденную по текущему токену. Если подписки нет — null.

getStatusOfLatestSubscriptionForProvider(provider)

static Future<ResponseWithHttpCode?> getStatusOfLatestSubscriptionForProvider(
String? provider,
)

Возвращает статус последней подписки по указанному провайдеру. Если provider = null, используется провайдер текущего токена.

ПараметрТипОписание
providerString?Идентификатор провайдера (например, android-firebase).

Все три метода возвращают Future<ResponseWithHttpCode?> и выбрасывают AltcraftException при ошибке.


События SDK​

subscribeToEvents()

static Stream<SdkEvent> subscribeToEvents()

Возвращает поток событий SDK. События доставляются из нативного SDK через EventChannel (com.altcraft/events). Каждый вызов создаёт независимый Stream.

Возвращает: Stream<SdkEvent>.

unsubscribeFromEvents()

static Future<void> unsubscribeFromEvents()

Останавливает доставку событий из нативного SDK. Для повторной подписки вызовите subscribeToEvents().

Возвращает: Future<void>.

import 'dart:async';
import 'package:altcraft_sdk/altcraft_sdk.dart';

StreamSubscription<SdkEvent>? subscription;

void startListening() {
subscription = AltcraftSDK.subscribeToEvents().listen(
(SdkEvent event) {
print('[${event.type}] ${event.function}: ${event.message}');
},
);
}

Future<void> stopListening() async {
await subscription?.cancel();
subscription = null;
await AltcraftSDK.unsubscribeFromEvents();
}

Мобильные события и профиль​

mobileEvent()

static void mobileEvent({
required String sid,
required String eventName,
String? sendMessageId,
Map<String, dynamic>? payload,
Map<String, dynamic>? matching,
String? matchingType,
Map<String, dynamic>? profileFields,
Map<String, dynamic>? subscription,
Map<String, dynamic>? utm,
})

Регистрирует мобильное событие Altcraft.

ПараметрТипОписание
sidStringИдентификатор пикселя (обязательный).
eventNameStringИмя события (обязательный).
sendMessageIdString?SMID отправленного сообщения.
payloadMap<String, dynamic>?Данные события. Сериализуются через MethodChannel.
matchingMap<String, dynamic>?Данные матчинга (например, {'email': 'user@example.com'}).
matchingTypeString?Тип матчинга.
profileFieldsMap<String, dynamic>?Поля профиля (JWT-сценарии).
subscriptionMap<String, dynamic>?Подписка для канала. Используйте Subscription.toMap().
utmMap<String, dynamic>?UTM-метки.

Возвращает: void.

AltcraftSDK.mobileEvent(
sid: 'pixel-000000000000000000000000',
eventName: 'purchase',
payload: const {
'orderId': 'A-1001',
'amount': 3990,
'currency': 'RUB',
},
);

updateProfileFields()

static void updateProfileFields({
Map<String, dynamic>? profileFields,
bool? skipTriggers,
})

Обновляет поля профиля на сервере.

ПараметрТипОписание
profileFieldsMap<String, dynamic>?Карта полей профиля для обновления.
skipTriggersbool?При true профиль игнорируется в триггерах рассылок и сценариев.

Возвращает: void.


Push-токены​

getPushToken()

static Future<TokenData?> getPushToken()

Возвращает текущие данные push-токена устройства и провайдера.

Возвращает: Future<TokenData?> — объект TokenData или null, если токен недоступен.

Выбрасывает: AltcraftException при ошибке.

setPushToken(provider, token)

static Future<void> setPushToken(String provider, String? token)

Устанавливает или очищает push-токен для указанного провайдера. Сохранение выполняется на нативной стороне SDK.

ПараметрТипОписание
providerStringИдентификатор провайдера (например, android-firebase, ios-apns).
tokenString?Значение токена. null — очистка токена.

forcedTokenUpdate()

static Future<void> forcedTokenUpdate()

Принудительное обновление push-токена: удаляет текущий токен и запрашивает новый у провайдера.

deleteDeviceToken(provider)

static Future<void> deleteDeviceToken(String provider)

Удаляет токен устройства для указанного провайдера.

ПараметрТипОписание
providerStringИдентификатор провайдера.

changePushProviderPriorityList(priorityList)

static Future<void> changePushProviderPriorityList(List<String> priorityList)

Изменяет список приоритетов push-провайдеров и инициирует обновление токена.

ПараметрТипОписание
priorityListList<String>Новый список приоритетов. Индекс 0 — самый приоритетный.
await AltcraftSDK.changePushProviderPriorityList(
['android-firebase', 'android-huawei', 'android-rustore'],
);

Все методы выбрасывают AltcraftException при ошибке.


Push-уведомления (Android)​

takePush(message)

static void takePush(Map<String, String> message)

Передаёт входящий push payload в SDK. Работает на Android. На iOS обработка push выполняется нативно.

ПараметрТипОписание
messageMap<String, String>Данные push-уведомления, преобразованные в Map<String, String>.

isAltcraftPush(message)

static Future<bool> isAltcraftPush(Map<String, String> message)

Проверяет, относится ли push-сообщение к Altcraft.

ПараметрТипОписание
messageMap<String, String>Payload push-сообщения.

Возвращает: Future<bool> — true, если сообщение принадлежит Altcraft.

deliveryEvent(message, messageUID)

static void deliveryEvent(Map<String, String>? message, String? messageUID)

Ручная регистрация доставки push-уведомления (Android).

ПараметрТипОписание
messageMap<String, String>?Data payload уведомления.
messageUIDString?Идентификатор сообщения.

Можно передать только message (SDK извлечёт UID из payload) или только messageUID. Если оба null — событие не зарегистрируется.

openEvent(message, messageUID)

static void openEvent(Map<String, String>? message, String? messageUID)

Ручная регистрация открытия push-уведомления (Android). Параметры и правила передачи идентичны deliveryEvent().


Native storage (iOS / Android)​

setAppGroup(groupName)

static void setAppGroup(String? groupName)

Устанавливает App Group для UserDefaults на iOS. Определяет пространство, разделяемое между основным приложением и Notification Service Extension.

ПараметрТипОписание
groupNameString?Идентификатор App Group (например, group.altcraft.example).

setUserDefaultsValue(suiteName, key, value)

static void setUserDefaultsValue(String? suiteName, String key, dynamic value)

Сохраняет значение в нативном хранилище: UserDefaults на iOS, SharedPreferences на Android. Значение value преобразуется в строку через toString().

ПараметрТипОписание
suiteNameString?Имя App Group / suite (iOS). На Android игнорируется.
keyStringКлюч хранилища.
valuedynamicЗначение (преобразуется в String).
class AltcraftConfig
class AltcraftConfig {
final String apiUrl;
final String? rToken;
final AppInfo? appInfo;
final List<String>? providerPriorityList;
final bool? enableLogging;

// -------- ANDROID-ONLY --------
final int? icon;
final List<String>? pushReceiverModules;
final String? pushChannelName;
final String? pushChannelDescription;
}

Класс конфигурации Altcraft SDK. Хранит базовый API URL и опциональные параметры.

ПолеТипОбязательныйОписание
apiUrlStringДаБазовый URL Altcraft API.
rTokenString?НетРолевой токен (идентифицирует ресурс/БД/аккаунт).
appInfoAppInfo?НетМетаданные приложения (ID, IID, версия).
providerPriorityListList<String>?НетПриоритет провайдеров push. Индекс 0 — самый приоритетный.
enableLoggingbool?НетВключает/отключает ведение логов.
iconint?НетID ресурса иконки уведомлений (Android).
pushReceiverModulesList<String>?НетПакеты модулей с переопределённым PushReceiver (Android).
pushChannelNameString?НетИмя канала push-уведомлений (Android).
pushChannelDescriptionString?НетОписание канала push-уведомлений (Android).

AppInfo:

class AppInfo {
final String appID;
final String appIID;
final String appVer;
}
ПолеТипОписание
appIDStringИдентификатор приложения (Firebase App ID).
appIIDStringИдентификатор установки (Firebase Instance ID).
appVerStringВерсия приложения.
Data Classes

SdkEvent

class SdkEvent {
final String function;
final int? code;
final String message;
final String type;
final Map<String, dynamic>? value;
final String? timestamp;
}

Универсальное событие SDK, доставляется в Dart через Stream (под капотом EventChannel).

ПолеТипОписание
functionStringИмя функции SDK, вызвавшая событие.
codeint?Код события (см. таблицу кодов).
messageStringСообщение события.
typeStringevent, error, retryError.
valueMap<String, dynamic>?Дополнительные данные (например, response_with_http_code).
timestampString?Временная метка в формате yyyy-MM-dd HH:mm:ss.SSS.

TokenData

class TokenData {
final String provider;
final String token;
}

Данные push-токена провайдера устройства.

ПолеТипОписание
providerStringИдентификатор провайдера (например, android-firebase, ios-apns).
tokenStringЗначение push-токена.

ResponseWithHttpCode

class ResponseWithHttpCode {
final int httpCode;
final Map<String, dynamic>? response;
}

Обёртка ответа API с HTTP-кодом. Поле response содержит:

ПолеТипОписание
errorint?Внутренний код ошибки сервера (0 — нет ошибок).
errorTextString?Текст ошибки.
profileMap<String, dynamic>?Данные профиля и подписки.

Вложенная структура profile:

ПолеТипОписание
idString?Идентификатор профиля.
statusString?Статус профиля.
isTestbool?Флаг тестового режима.
subscriptionMap<String, dynamic>?Данные подписки.

Вложенная структура subscription:

ПолеТипОписание
subscription_idString?Идентификатор подписки у провайдера.
hash_idString?Хэш подписки.
providerString?Провайдер подписки.
statusString?Статус подписки (subscribed, suspended, unsubscribed).
fieldsMap<String, dynamic>?Системные и пользовательские поля.
catsList<dynamic>?Категории подписки.

CategoryData

class CategoryData {
final String? name;
final String? title;
final bool? steady;
final bool? active;
}

Категория подписки.

ПолеТипОписание
nameString?Название категории.
titleString?Заголовок (заполняется при получении данных подписки).
steadybool?Флаг стабильности (заполняется при получении данных подписки).
activebool?Статус активности категории.

При отправке push-запроса используйте только name и active.


Subscription

class Subscription {
final String type;
final int resourceId;
final String? status;
final int? priority;
final String? email;
final String? phone;
final String? provider;
final String? subscriptionId;
final Map<String, dynamic>? customFields;
final List<dynamic>? cats;
final Map<String, dynamic>? ccData;
}

Модель подписки для мобильных событий. Factory-конструкторы:

// Email
Subscription.email({required int resourceId, required String email, ...})

// SMS
Subscription.sms({required int resourceId, required String phone, ...})

// Push
Subscription.push({required int resourceId, required String provider, required String subscriptionId, ...})

// CcData (Telegram, WhatsApp, Viber, Notify)
Subscription(type: 'cc_data', resourceId: 10, ccData: {'channel': 'telegram_bot', 'chat_id': '123456'})

Метод toMap() сериализует подписку в Map<String, dynamic> для передачи в mobileEvent().


UTM

class UTM {
final String? source;
final String? medium;
final String? campaign;
final String? content;
final String? keyword;
final String? temp;
}

Контейнер UTM-параметров для атрибуции мобильных событий. В mobileEvent() передаётся как Map<String, dynamic>.

ActionFieldBuilder
class ActionFieldBuilder {
final String key;

Map<String, dynamic> set(dynamic value);
Map<String, dynamic> unset(dynamic value);
Map<String, dynamic> incr(dynamic value);
Map<String, dynamic> add(dynamic value);
Map<String, dynamic> delete(dynamic value);
Map<String, dynamic> upsert(dynamic value);
}

ActionFieldBuilder actionField(String key);

Builder для структурированного управления полями профиля. Производит карту, совместимую с нативным SDK.

МетодОписание
set(value)Установить поле в заданное значение.
unset(value)Удалить значение поля.
incr(value)Увеличить числовое поле на заданное значение.
add(value)Добавить значение в поле-множество/массив.
delete(value)Удалить значение из поля-множества/массива.
upsert(value)Установить, если поле отсутствует; обновить, если существует.
import 'package:altcraft_sdk/altcraft_sdk.dart';

final profileFields = <String, dynamic>{
...actionField('_fname').set('Ivan'),
...actionField('login_count').incr(1),
...actionField('visited_pages').add('/settings'),
};

AltcraftSDK.updateProfileFields(profileFields: profileFields);
Exceptions

AltcraftException

class AltcraftException implements Exception {
final String code;
final String message;
final Object? details;
}

Исключение, выбрасываемое SDK при ошибках вызова методов через MethodChannel.

ПолеТипОписание
codeStringКод ошибки.
messageStringСообщение об ошибке.
detailsObject?Дополнительные данные.

SdkNotInitializedException

class SdkNotInitializedException extends AltcraftException

Выбрасывается при вызове методов SDK до инициализации. Код: SDK_NOT_INITIALIZED.

try {
await AltcraftSDK.getStatusOfLatestSubscription();
} on SdkNotInitializedException {
print('SDK not initialized yet');
} on AltcraftException catch (e) {
print('SDK error (${e.code}): ${e.message}');
}
Constants

Провайдеры push-уведомлений:

ПровайдерЗначение
FCM (Android)android-firebase
HMS (Android)android-huawei
RuStore (Android)android-rustore
APNS (iOS)ios-apns
FCM (iOS)ios-firebase
HMS (iOS)ios-huawei

Статусы подписки:

СтатусЗначение
Подписанsubscribed
Отписанunsubscribed
Приостановленsuspended
Последнее обновление 6 июл. 2026 г.
Предыдущая страница
Функционал SDK
Следующая страница
Настройка провайдеров
  • Инициализация
  • Подписка на push
  • Статус подписки
  • События SDK
  • Мобильные события и профиль
  • Push-токены
  • Push-уведомления (Android)
  • Native storage (iOS / Android)
© 2015 - 2026 Altcraft. Все права защищены.