# Инициализация
WARNING
Это самая важная часть SDK. Без нее все будет работать неправильно, сломается аналитика и сломаются инструменты. Очень важно все сделать так, как здесь написано, и никак иначе.
# Устройства и пользователи
Мы разделяем устройство и человека: смартфон, ноутбук и десктоп. У человека может быть несколько устройств. У устройства может быть несколько пользователей: например инфокиоск в магазине или семейный планшет.
Очень важно понимать, кто именно сейчас пользуется устройством, просматривает товары и покупает их. В случае семейного десктопа проблема может быть незначительной, но в случае инфокиоска, которым пользуется 200 человек в день, последствия будут плачевными.
# Инициализация
В случае мобильного приложения инициализация SDK должна быть выполнена в момент запуска приложения.
В случае веб-сайта, инициализация происходит на каждой странице сайта.
В случае SPA-сайта, инициализация также происходит при первом открытии сайта.
# Процесс инициализации
- Попытаться прочитать из локального хранилища идентификатор устройства
did, выданный ранее API. - Попытаться прочитать из локального хранилища временный идентификатор сессии
seance, выданный ранее API. - Сформировать запрос к методу API
/initс полученными данными. Еслиdidиseanceнет, отправлять пустые значения. Обязательно передавать все остальные параметры метода/initиз документации. - При обработке ответа от сервера, необходимо:
- Обновить
didв хранилище, если он изменился (или был пустым перед запросом). - Обновить
seanceв хранилище, если он изменился (или был пустым перед запросом). - Установить флаг в SDK, что приложение инициализировано. Этот флаг в дальнейшем используется везде.
- Обновить
# Обработка ошибок
| Ошибка | Что делать |
|---|---|
| Нет связи | Повторить попытку с интервалом в 15 секунд не более 3 раз |
| 4xx | Не делать повторные попытки |
| 500 | Повторить попытку с интервалом в 15 секунд не более 3 раз |
| 502 | Не делать повторные попытки |
| 504 | Не делать повторные попытки |
Если инициализация SDK не удалась, не выполнять все последующие коммуникации с API.
# Постоянность did
Приложение должно обеспечить максимально долгое хранение did. В идеале: вечное.
# Протухание seance
Приложение должно обеспечить очистку seance при следующих условиях:
- Приложение было закрыто и открыто заново.
- С момента последнего действия пользователя с приложением прошло более 40 минут. Это важно.
# Трекинг источника перехода
Когда пользователь открывает приложение при переходе из мобильного пуша или email/sms рассылки, выполненной сервисом, необходимо передать к нам в API, что текущая сессия инициирована с помощью одного из инструментов сервиса:
- Для мобильных пушей необходимо взять содержимое свойства
src.[id|type]и отправить запросом к методу API (opens new window)/web_push_subscriptions/clicked. Этот метод также отслеживает клик по мобильному пушу, необходимый в сегментации, триггерах и аналитике. - Для автоматических переходов из письма:
TBD.