Перейти к основному содержимому
Altcraft Docs LogoAltcraft Docs Logo
Пользователям iconПользователям
Разработчикам iconРазработчикам
Администраторам iconАдминистраторам
Русский
  • Русский
  • English
Войти
    Документация пользователяС чего начатьFAQТермины
      Обновления платформыarrow
    • v2026.3.79v2026.3.78v2026.2.77v2026.1.76v2025.4.75v2025.4.74v2025.3.73v2025.2.72v2025.1.71v2024.4.70v2024.3.69v2024.2.68.2v2024.1.68
      Хранение и сбор данныхarrow
    • Ресурсы подписокРабота с базами данныхПрофиль подписчикаИмпорт профилей клиентов и обновление данныхЧастые ошибки при импорте профилейИмпорт данных по расписаниюУправление таблицами данныхАвтоматизация сбора данных о профилеМассовое обновление профилей клиентовDouble opt-in подпискаСтоп-спискиСвязи между профилямиЭкспорт истории профилейЭкспорт профилейАвтоматическое создание статического сегмента при импортеКак открыть CSV-файлМатчингТипы полей в базе данныхГлобальные контрольные группыМенеджер подписок
      Каналы коммуникацииarrow
      • Emailarrow
        • Рассылка с нуляarrow
        • Быстрый стартПервая Email-рассылка
        Рекомендации по взаимодействию с ISPНастройка собственного from-доменаНастройка и использование постмастеровКак работает email-трекинг
        Pusharrow
        • Mobile Pusharrow
        • Первая Mobile push-рассылка
            Провайдеры Mobile Pusharrow
          • Firebase Cloud MessagingApple Push Notification ServiceHuawei Mobile ServicesRuStoreYandex.AppMetrica
          Интеграция приложения с Altcraft
            Устаревшее: ручная настройка Pusharrow
          • Устаревшее: настройка и подключениеОбработка и добавление подпискиРегистрация событийПровайдеры: структура push-сообщения
          Web Pusharrow
        • Первая Web push-рассылкаНастройка ресурса и сайта
            Провайдеры Web Pusharrow
          • Firebase Cloud MessagingApple SafariMozilla Services
          Передача данных в платформуМетоды Web Push SDKPWA и Push-уведомления
            Миграция и перенос подписокarrow
          • Перенос push-подписок из стороннего сервисаПеренос push-подписок для SafariМиграция с OneSignal
        SMSarrow
      • Первая SMS-рассылка
        In-Apparrow
      • Первое размещение для In-AppНастройка и подключение SDK
        Telegramarrow
      • Telegram BotTelegram Group
        Maxarrow
      • MAX BotMAX Group
      Viber™WhatsAppNotifyСхема работы каналов коммуникацииРуководство: SMS-рассылка через VK NotifyРуководство: SMS-рассылка через УТШРуководство: push-рассылка через сервис от "Согласие"
      Сегментацияarrow
    • Статические сегментыДинамические сегментыОбновляемые сегменты
        Условия сегментацииarrow
      • Сегментация по данным профиляСегментация по взаимодействиям с сущностямиСегментация по активности в каналах коммуникации
          Сегментация по внешним даннымarrow
        • Сегментация по внешним даннымСегментация по внешним SQL-таблицамРекомендации по сегментации по внешним данным
        Сегментация по структуре профиля
      Лучшее время отправки (BST)Логические операторы "И" и "ИЛИ"Рекомендации по работе с сегментами
      Шаблоны сообщенийarrow
      • Работа с шаблонами сообщенийarrow
      • Работа в редактореEmail-шаблонSMS-шаблонPush-шаблонШаблон для In-AppMAX-шаблонTelegram-шаблонWhatsApp-шаблонViber-шаблонNotify-шаблон
        Визуальный редактор для email-шаблонаarrow
      • Интерфейс редактораДобавление элементовЭлементы и их настройкиПользовательские блокиСтили элементаСтруктура элементов
      Блочный редактор для email-шаблонаФрагменты шаблоновИзображения в сообщенияхПерсонализация контента в сообщенияхФормирование таблиц на основе элементов массива
        Переменные и функции Altcraftarrow
      • Использование логических выражений в сообщенияхИспользование циклов в сообщенияхИспользование переменных маркета в сообщенияхИспользование функционала JSONPath
        Динамический контент сообщенийarrow
      • Использование API-контента в сообщенияхИспользование HTML-контента в сообщенияхИспользование JSON-контента в сообщенияхИспользование контента из SQL базы данных в сообщениях
      Импорт и экспорт шаблона сообщенияЭкспорт шаблона из PixcraftИмпорт шаблона из стороннего сервиса
      Рассылкиarrow
    • Броадкаст-рассылкаТриггерная рассылкаРегулярная рассылкаМультивариантный тест (A/B/n)РазмещенияРасписание рассылокТестирование расылокКалендарь рассылокЖурнал рассылки — ошибки и способы их устраненияУправление очередью сендера
      Кампанииarrow
    • Работа с КампаниямиЛокальные контрольные группы (ЛКГ)Ошибка нарушения стратификации при достижении лимитаРасширение аудитории в кампанииРазметка аудитории в кампаниях
      Сценарии автоматизацииarrow
    • Работа со Сценариями автоматизацииУзлы сценарияКлассические сценарии автоматизации маркетингаПриветственный сценарий: пошаговая настройкаАвтоматическое оповещение менеджера через сценарийСценарий брошенной корзиныОбработка циклов в сценариях автоматизацииВысокоприоритетные сценарии
      Маркетarrow
    • Настройки маркета
        Продуктыarrow
      • Создание продукта вручнуюИмпорт продукта из файлаИмпорт по расписаниюСегменты продуктов и SKUПодготовка YML-файла
      ЗаказыПеременные маркета в шаблонахРуководство: как отправить письмо подтверждения заказа
      Лояльностьarrow
    • Создание и настройка программы лояльностиИнтеграция лояльности с внешними системамиСоздание программы лояльности с нуляБазовые кейсы использования программы лояльностиСегменты заказовПромокоды
      Веб-слойarrow
      • Формыarrow
        • Создание формыarrow
        • Основные настройки формыКастомизация формы через дополнительный кодКонструктор формыОформление формыДействия и публикация формыУсловная постраничная логика в формах и опросах
        Аналитика данныхСвязывание данных канала и формыNPS-тестирование
        Пикселиarrow
      • Целевые действия клиентов и скоринг
        Попапыarrow
      • Создание и публикация попапаНастройка попапа в редакторе кодаУправление попапами вручную через скриптАналитика попаповРуководство: попап для подписки на pushБазовые кейсы размещения попапа через Менеджер теговКейс: Создание попапа с виджетом "Колесо фортуны"
        Менеджер теговarrow
      • Настройка и установка Менеджера теговТипы триггеровТипы переменныхСвязывание пикселя и Менеджера тегов
      Отчеты и аналитикаarrow
    • Отчет по каналамОтчёт по трафику
        Сводный отчётarrow
      • Все показатели сводного отчета
      Когортный отчётВремя жизниВоронка конверсииЦелиПрирост аудиторииКарта кликов (Email)Отчет по программам лояльностиОтчёт о возвратахОтчёт о недоставкахОтчет по глобальным контрольным группам
      Интеграцииarrow
    • Facebook Ads Manager
        Yandexarrow
      • Yandex AppMetricaЯндекс.Аудитории
      Аудитории Google AdsWhatsAppСинхронизация статических сегментовViberVK РекламаNotifyMAX
        Захват событийarrow
      • LpgeneratorTildaЗахват событий AltcraftТипы событий для захватаСтруктуры сообщений захвата событийОтправить JSON-запрос батчемОтправить сообщение в очередь RabbitMQОтправить сообщение в exchange RabbitMQОтправить сообщение в Kafka brokerПредварительное тестирование события
        Интеграция сторонних сервисов с Altcraft через Albatoarrow
      • Подключение Altcraft к AlbatoЗапуск приветственного сценария через AlbatoПередача данных о событииОтправка триггерной рассылкиРегистрация событийИмпорт данных из Google Sheets через AlbatoПередача данных из Altcraft
        Дополнительная информацияarrow
      • Область видимости интеграцииПередаваемые при синхронизации данные
      Настройкиarrow
    • Настройки аккаунтаНастройки атрибутовПоисковые теги: создание и применениеПользовательские ссылкиВиртуальные сендерыПолитики отправки
        Пользователи и разграничение доступаarrow
      • Пароль и безопасность входаДвухфакторная аутентификация (2FA)
        Подключенияarrow
      • Подключение к Facebook AdsПодключение к Google AdsПодключение к Яндекс.Аудиториям™Подключение к 360dialogПодключение к EdnaПодключение к Devino TelecomПодключение к SMS TrafficПодключение к VK Рекламе™Подключение к MTS OmniChannelПодключение через OAuth2Подключение через Basic AuthenticationПодключение через Token AuthenticationПодключение через Custom AuthenticationПодключение к MAXПодключение к NotifyПодключение к Rapporto
      Журнал аудита
      API-запросы: с чего начатьarrow
    • Импорт и обновление профиляЗапуск триггерной рассылкиОтправка профиля клиента в сценарий
    Архив документацииБиблиотека email-маркетолога
  • Каналы коммуникации
  • In-App
  • Настройка и подключение SDK

Настройка и подключение SDK

Для работы с In-App-каналом в мобильное приложение необходимо интегрировать Altcraft mSDK. SDK отвечает за аутентификацию пользователя, подписку на канал, получение доступных размещений и показ In-App-контента в приложении.

Подключение mSDK

Процедура подключения mSDK зависит от платформы. Подробные инструкции по каждой платформе предоставлены в руководстве разработчика: Android, iOS, Flutter, React Native.

Авторизация​

SDK поддерживает два способа авторизации — JWT-токен и ролевой токен (rToken):

  • JWT-токен — обязателен, если нужна персонализация. Матчинг профиля (поиск по email, телефону, profile_id и другим идентификаторам) возможен только с JWT. JWT-провайдер регистрируется в SDK до инициализации.
  • rToken — ролевой токен, привязанный к ресурсу. In-App не привязан к push-каналу: ролевой токен можно использовать и без интеграции push-провайдеров. Но с ролевым токеном размещения запускаются для всех пользователей — персонализация недоступна.

После создания ресурса в его настройках будет доступен раздел с управлением токенами:

Для создания ролевого токена не требуется добавлять публичный ключ: укажите его название, дату истечения и привязанную к нему базу профилей:

Ролевой токен выступает ключом доступа со стороны mSDK к связке «ресурс-база».

Для создания JWT-токена понадобится предоставить публичный ключ. Платформа допускает использование алгоритма ES384 (ECDSA, как наиболее надёжный), а также RS256, ES256, ES512 для совместимости с библиотеками разных приложений:

Приложение должно передать SDK JWT-токен, который генерируется серверной частью клиента с помощью следующего payload:

{
"iss": "<App Name>",
"exp": <UnixTimeUTC>,
"rtoken": "<RoleToken>",
"matching": "JSONString"
}
  • iss — issuer — уникальный идентификатор создателя токена;
  • exp — expiration time — время истечения токена в формате UNIX timestamp в секундах;
  • rtoken — ролевой токен, полученный при настройке ресурса в платформе;
  • matching — сериализованный в строку объект матчинга профиля, например {"db_id":2,"email":"registered_db@localhost","matching":"email_profile"}.

Подробнее о структуре JWT и его отличиях от rToken — в статье Работа с ролевым и JWT-токеном.

Инициализация и запуск In-App​

Базовый принцип работы с SDK:

  1. Интегрируйте mSDK и настройте авторизацию (см. выше).
  2. При старте приложения инициализируйте SDK: укажите API-адрес платформы, при JWT-авторизации зарегистрируйте провайдер токена до инициализации.
  3. Сразу после инициализации подпишитесь на жизненный цикл активности (registerLifecycleTracking()), иначе In-App-уведомления, которые должны показаться при старте приложения, могут быть пропущены.
  4. После инициализации выполните в приложении: аутентификацию (authenticate()), подписку на канал (inAppSubscribe()), запрос размещений (getInAppPlacements()). Для показа контента только на определённых экранах используйте setScreen().
Обязательно вызывайте inAppSubscribe()

Даже если подписка на In-App-канал добавлена вручную в интерфейсе платформы, необходимо вызвать inAppSubscribe() в приложении. Без этого SDK не зарегистрирует профиль для In-App, матчинг не сработает, и персонализированные размещения не будут показываться. Функцию вызывайте после завершения аутентификации.

Пример инициализации и подписки (Android)

Инициализация в классе приложения:

class AltcraftApp : Application() {
override fun onCreate() {
super.onCreate()

// Регистрация JWT-провайдера (до инициализации SDK)
AltcraftSDK.setJWTProvider(MyJWTProvider())

// Инициализация SDK
val config = AltcraftConfiguration.Builder(
apiUrl = "https://<API-домен>",
enableLogging = true
).build()
AltcraftSDK.initialization(context = this, configuration = config)

// Регистрация жизненного цикла активности для автоматического показа In-App
AltcraftSDK.inAppFunctions.registerLifecycleTracking(this)
}
}

Аутентификация, подписка и запрос размещений в активности:

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// Устанавливаем экран для фильтрации In-App-контента
AltcraftSDK.inAppFunctions.setScreen("home")

// Запрос доступных размещений In-App
AltcraftSDK.inAppFunctions.getInAppPlacements(this)

// Аутентификация и подписка на In-App-канал
CoroutineScope(Dispatchers.Main).launch {
AltcraftSDK.authFunctions.authenticate(this@MainActivity)
withTimeoutOrNull(10_000L) {
while (!AltcraftSDK.authFunctions.isAuthenticated(this@MainActivity)) {
delay(100L)
}
}
AltcraftSDK.inAppFunctions.inAppSubscribe(context = this@MainActivity, sync = true)
}
}
}
Пример инициализации и подписки (iOS)

Инициализация в AppDelegate.application(_:didFinishLaunchingWithOptions:):

class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Регистрация JWT-провайдера (до инициализации SDK)
AltcraftSDK.setJWTProvider(provider: JWTProvider())

// Инициализация SDK
AltcraftSDK.shared.initialization()

// Регистрация жизненного цикла приложения для автоматического показа In-App
AltcraftSDK.shared.inAppFunctions.registerLifecycleTracking()

return true
}
}

Аутентификация, подписка и запрос размещений:

// Устанавливаем экран для фильтрации In-App-контента
AltcraftSDK.shared.inAppFunctions.setScreen(screen: "home")

// Запрос доступных размещений In-App
AltcraftSDK.shared.inAppFunctions.getInAppPlacements()

// Аутентификация и подписка на In-App-канал
AltcraftSDK.shared.authFunctions.authenticate()
AltcraftSDK.shared.inAppFunctions.inAppSubscribe()

Подробные примеры кода для каждой платформы — в документации по mSDK.

Особенности и частые ошибки​

  • Неверный API-домен. apiUrl должен указывать на API-эндпоинт платформы (например, pxl-*.altcraft.com), а не на трекинг-домен. Если SDK не может получить размещения (ошибка 404 No such route или Role Token processing error) — проверьте apiUrl.
  • Истёкший токен. Токен должен быть подписан ключом, добавленным в ресурсе. Токен с истёкшей датой вернёт ошибку Role Token processing error.
  • db_id в матчинге должен соответствовать ID базы данных, привязанной к токену. Иначе профиль не будет найден.
  • HTTP-запросы. Для работы с API по незащищённому протоколу (dev-окружения) в манифесте приложения должен быть разрешён cleartext-трафик.
Последнее обновление 28 сент. 2026 г.
Предыдущая страница
Первое размещение для In-App
Следующая страница
Telegram
  • Авторизация
  • Инициализация и запуск In-App
  • Особенности и частые ошибки
© 2015 - 2026 Altcraft. Все права защищены.