Как работает гарантированная доставка данных в мобильном SDK

Мобильный интернет может быть нестабильным. Может падать скорость, пропадать связь или неожиданно включаться Wi-Fi с ограничением доступа в сеть, как, например в московском метро.

Чтобы в подобных ситуациях гарантировать, что данные от мобильного приложения доставятся до Mindbox, мы сделали систему «Гарантированной доставки» в мобильном SDK.

Когда вы передаете какие-либо данные через метод executeAsyncOperation, информация об этом сначала записывается в память устройства, а дальше отправляется в нашу систему.

Если при попытке передачи данных мы:
— получили ответ, что данные получены (ответ с кодом 200), данные стираются из памяти телефона;
— если мы получили ответ с кодом 40*, то есть «некорректный запрос», данные также стираются с телефона;
— если мы получили любой другой ответ (ошибка сети, код 50* или что-либо еще), данные остаются в памяти телефона и будут отправлены повторно позже.

На Android механизм работает автоматически и не требует дополнительных настроек.
На iOS для его работы нужно выполнить шаги инструкции про регистрацию "фоновых задач".

Мы стараемся отправить данные от приложения как можно быстрее, но в сложных условиях могут возникать задержки.

Ограничения хранения данных

В системе гарантированной доставки есть два ограничения на хранение данных:
— одновременно может быть не более 10 000 записей. Если достигнут этот лимит и добавляются новые, самые старые стираются;
— хранятся записи не старше 6 месяцев. Если какое-то событие находится в памяти дольше, оно стирается.

Работа с API без навыков программирования - интегрируем друг с другом разные сервисы типа банкинга, телефонии и CRM-систем.