Как работает гарантированная доставка данных в мобильном SDK
Мобильный интернет может быть нестабильным. Может падать скорость, пропадать связь или неожиданно включаться Wi-Fi с ограничением доступа в сеть, как, например в московском метро.
Чтобы в подобных ситуациях гарантировать, что данные от мобильного приложения доставятся до Mindbox, мы сделали систему «Гарантированной доставки» в мобильном SDK.
Когда вы передаете какие-либо данные через метод executeAsyncOperation
, информация об этом сначала записывается в память устройства, а дальше отправляется в нашу систему.
Если при попытке передачи данных мы:
— получили ответ, что данные получены (ответ с кодом 200), данные стираются из памяти телефона;
— если мы получили ответ с кодом 40*, то есть «некорректный запрос», данные также стираются с телефона;
— если мы получили любой другой ответ (ошибка сети, код 50* или что-либо еще), данные остаются в памяти телефона и будут отправлены повторно позже.
На Android механизм работает автоматически и не требует дополнительных настроек.
На iOS для его работы нужно выполнить шаги инструкции про регистрацию "фоновых задач".
Мы стараемся отправить данные от приложения как можно быстрее, но в сложных условиях могут возникать задержки.
Ограничения хранения данных
В системе гарантированной доставки есть два ограничения на хранение данных:
— одновременно может быть не более 10 000 записей. Если достигнут этот лимит и добавляются новые, самые старые стираются;
— хранятся записи не старше 6 месяцев. Если какое-то событие находится в памяти дольше, оно стирается.