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

WARNING

Это самая важная часть SDK. Без нее все будет работать неправильно, сломается аналитика и сломаются инструменты. Очень важно все сделать так, как здесь написано, и никак иначе.

# Устройства и пользователи

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

Очень важно понимать, кто именно сейчас пользуется устройством, просматривает товары и покупает их. В случае семейного десктопа проблема может быть незначительной, но в случае инфокиоска, которым пользуется 200 человек в день, последствия будут плачевными.

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

В случае мобильного приложения инициализация SDK должна быть выполнена в момент запуска приложения.

В случае веб-сайта, инициализация происходит на каждой странице сайта.

В случае SPA-сайта, инициализация также происходит при первом открытии сайта.

# Процесс инициализации

  1. Попытаться прочитать из локального хранилища идентификатор устройства did, выданный ранее API.
  2. Попытаться прочитать из локального хранилища временный идентификатор сессии seance, выданный ранее API.
  3. Сформировать запрос к методу API /init с полученными данными. Если did и seance нет, отправлять пустые значения. Обязательно передавать все остальные параметры метода /init из документации.
  4. При обработке ответа от сервера, необходимо:
    • Обновить did в хранилище, если он изменился (или был пустым перед запросом).
    • Обновить seance в хранилище, если он изменился (или был пустым перед запросом).
    • Установить флаг в SDK, что приложение инициализировано. Этот флаг в дальнейшем используется везде.

# Обработка ошибок

Ошибка Что делать
Нет связи Повторить попытку с интервалом в 15 секунд не более 3 раз
4xx Не делать повторные попытки
500 Повторить попытку с интервалом в 15 секунд не более 3 раз
502 Не делать повторные попытки
504 Не делать повторные попытки

Если инициализация SDK не удалась, не выполнять все последующие коммуникации с API.

# Постоянность did

Приложение должно обеспечить максимально долгое хранение did. В идеале: вечное.

# Протухание seance

Приложение должно обеспечить очистку seance при следующих условиях:

  1. Приложение было закрыто и открыто заново.
  2. С момента последнего действия пользователя с приложением прошло более 40 минут. Это важно.

# Трекинг источника перехода

Когда пользователь открывает приложение при переходе из мобильного пуша или email/sms рассылки, выполненной сервисом, необходимо передать к нам в API, что текущая сессия инициирована с помощью одного из инструментов сервиса:

  1. Для мобильных пушей необходимо взять содержимое свойства src.[id|type] и отправить запросом к методу API (opens new window) /web_push_subscriptions/clicked. Этот метод также отслеживает клик по мобильному пушу, необходимый в сегментации, триггерах и аналитике.
  2. Для автоматических переходов из письма: TBD.