Перейти к содержимому

Оффлайн-режим клиентского приложения

Favy Client App — это PWA (Progressive Web App), поэтому часть данных сохраняется прямо на устройстве клиента. Это позволяет приложению продолжать работать, даже если интернета нет — слабый сигнал в помещении, недоступный wifi или временное отключение мобильной сети.

Что важно знать бизнесу

Офлайн-режим включён по умолчанию для всех клиентов Favy, на всех тарифах. Дополнительно настраивать ничего не нужно.

Что доступно офлайн

Действие в клиентском приложении (без сети у клиента)Доступно офлайн
Просмотр последнего известного баланса баллов
Показ QR-кода клиента (для идентификации на кассе)
Начисление/списание баллов кассиром по QR-коду клиента✔ (нужна связь у точки продаж, не у клиента)
Просмотр истории операций (последние загруженные)
Обновление баланса после новой операции✖ (нужна сеть у клиента, чтобы подтянуть данные с сервера)
Первый вход / регистрация нового клиента✖ (нужна сеть один раз)
Push-уведомления и кампании✖ (требуют сети)

Как это устроено на самом деле

Важно понимать модель данных: на устройстве клиента ничего не записывается и не хранится в виде очереди операций. Единственный источник истины — сервер Favy.

То, что видно офлайн (баланс баллов, QR-код, история операций) — это последнее известное состояние, которое приложение получило от сервера при последнем удачном подключении к сети, и закешировало локально для отображения. Это именно кеш для показа, а не рабочая копия данных.

Начисление и списание баллов — это всегда операция, которую выполняет точка продаж (кассир), а не клиентское приложение. Если у точки есть подключение к интернету, операция проходит и записывается на сервере немедленно — независимо от того, есть ли интернет у телефона клиента в этот момент. Клиентскому приложению для самого факта начисления/списания сеть не нужна вообще: достаточно, чтобы был на месте QR-код для идентификации клиента.

После того как операция прошла на точке, приложению клиента нужно снова выйти в сеть, чтобы подтянуть с сервера обновлённый баланс — до этого момента на экране будет виден баланс, известный на момент последнего подключения.

Важно для поддержки

Поскольку офлайн-данные на устройстве — это read-only кеш, а не локальная очередь операций, конфликтов синхронизации (двойное списание, гонка между устройствами и т.п.) на уровне клиентского приложения не возникает: единственное место, где фиксируется операция — сервер.

Если клиент видит на экране баланс, который «не совпадает с реальностью», это почти всегда значит, что приложение просто не успело обновить кеш после последней операции — достаточно открыть его при наличии интернета.

Ограничения офлайн-режима

Первый вход в приложение и регистрация нового клиента требуют подключения к интернету хотя бы один раз — приложению нужно получить данные аккаунта с сервера. После этого приложение может работать офлайн неограниченное время, пока используются уже загруженные данные.

Push-уведомления, маркетинговые кампании и любые действия, требующие обращения к серверу в реальном времени (например, применение промокода, привязанного к внешней системе), недоступны без подключения к сети.

Частые вопросы

Клиент жалуется, что баллы не обновились сразу после покупки — что делать? Операция начисления/списания уже прошла на сервере (если у точки продаж была связь в момент операции) — клиенту просто нужно открыть приложение при наличии интернета, чтобы подтянуть обновлённый баланс с сервера. До этого на экране будет виден баланс, известный на момент последнего подключения.

Может ли клиент "накрутить" баллы, если несколько раз показать QR-код офлайн? Нет — начисление и списание происходит на стороне сервера в момент, когда кассир проводит операцию на точке. Клиентское приложение только показывает QR-код для идентификации; оно не может само создать или изменить операцию, поэтому локальных манипуляций с балансом не бывает.

Нужно ли включать офлайн-режим в настройках? Нет, он работает по умолчанию и не требует настройки.

Работает ли офлайн-режим в POS-приложении на кассе так же, как в клиентском? Офлайн-режим клиентского приложения (эта страница) касается устройства клиента. Отдельная функциональность офлайн-режима для POS/кассы — в разработке, будет описана отдельно, когда будет готова.

Связь с другими разделами