Как разработать автономное приложение для Android

Мы разрабатываем собственное приложение для Android (iOS и веб-приложение), где пользователи могут совместно создавать альбом.

Мы хотим как можно более бесшовной работы, когда устройство не может подключиться к серверу. Что-то вроде упомянутого в этом блоге Hoodie, но Hoodie прямо сейчас для Интернета и iOS, и мы ищем Android прямо сейчас.

Проблема

Поддержание данных альбомов, друзей, картинок (URL/локальный, а не растровый) на стороне клиента. Возможность синхронизации автономных операций создания/обновления с сервером в дальнейшем с разрешением конфликтов.

Текущие исследования

  • HTTPResponseCache: Минусы: кэширует только те запросы, которые были удалены один раз. Кроме того, нужна другая система для обработки действий по созданию/обновлению.
  • App42, Kinvey: Backend-as-a-service; Минусы: мы хотим иметь собственный бэкэнд.
  • Инструментарий Microsoft Sync Framework Toolkit: не уверен, насколько хорошо он работает с Android.
  • PouchDB
  • Superbus: решает часть проблемы

Пользовательский

Поддержка данных в SQLite на Android и MySQL на сервере Синхронизация с помощью Android Sync Adapter. Однако это может занять много времени и иметь ошибки при запуске.

Как к этой проблеме нужно подойти?

Ответ 1

Сейчас я работаю над проектом, и нам нужно отслеживать поставки и проверять доставку, даже когда пользователь находится в автономном режиме. Подход, который я использую, заключается в использовании этого ContentProvider плагин Простой контент-провайдер. И я проверяю, есть ли там интернет или нет, и если нет. Он сохраняет данные поставщику и изменяет все, что необходимо изменить, в DATABASE и заставляет моего пользователя полагать, что он или она выполнили заказ. И у меня есть SyncAdapter, ожидающий выхода в Интернет. И у меня есть служба push, чтобы обновить базу данных после изменения базы данных. Имея понимание Google Cloud Messaging, вы сохранили бы у пользователя много времени на автономную работу. Там могут быть лучшие варианты. Но из моего небольшого опыта работы с Android, что моя небольшая помощь может быть.

Ответ 2

Вы посмотрели CouchBase Server и CouchBase Lite?

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

Couchbase Lite доступен для iOS и Android. Существует также plugin для доступной версии Cordova/PhoneGap.

У меня никогда не было никаких проблем с его компиляцией, просто для iOS нужно собирать для iOS6 +, это не работает с iOS5

Ответ 3

Вы можете проверить API с открытым исходным кодом для этого под названием Венди. Самое удивительное в этом то, что он использует вашу существующую архитектуру.