Как синхронизировать данные между разными устройствами

Я планирую реализовать приложение, и я дошел до того, что не знаю, какой подход лучше всего.

Сценарий:

У меня есть приложение, в котором я составляю список дел и добавляю 3 элемента. Я использую для этого свой телефон. Затем я беру свой планшет и хочу продолжить добавление еще одной задачи. Потом через некоторое время беру телефон жены и хочу добавить 2 новые задачи.

По сути, я хочу иметь очень простой способ хранения задач в Интернете и иметь возможность синхронизировать их с приложением.

Я вижу два возможных пути:

  • иметь веб-сервер с базой данных + вызовы веб-службы. Недостатком этого является то, что хост оплачивается, изучите некоторые дополнительные методы веб-сервиса mysql +.

  • каким-то образом храните данные в облаке и разрешите приложению, войдя в систему, получить доступ к учетной записи, в которой хранится файл. Я имею в виду что-то вроде Google Drive/Dropbox. Но я не знаю, как я смогу синхронизировать только обновленные значения, а не весь файл. Потому что я думаю, что если я буду хранить все задачи в одном файле, каждый раз, когда я обновляю файл, мне нужно будет загружать его полностью, что не лучший подход.

Я открыт для любых советов. Какой подход вы бы порекомендовали?


person Alin    schedule 16.07.2013    source источник
comment
Google Cloud Save звучит как идеальное решение, но оно еще не выпущено...разработчик .android.com/google/gcs/index.html   -  person Leo K    schedule 10.11.2014


Ответы (5)


Я бы рассмотрел либо Google App Engine, либо Веб-сервисы Amazon. Они оба дают вам бесплатное распределение использования в месяц, и если вы перейдете, то начнете платить, скорее всего, какое-то время вы не преодолеете бесплатный уровень.

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

person tyczj    schedule 16.07.2013
comment
Спасибо за ваши варианты. Кроме того, API DropBox Datastore кажется действительно хорошей бесплатной альтернативой... - person Alin; 17.07.2013

Также есть папка «Данные приложения» на Google Диске.

https://developers.google.com/drive/android/appfolder

Преимущество этого заключается в использовании пользовательского пространства для хранения.

person Mike    schedule 02.12.2014
comment
Я думаю, что для этого у вас должна быть одна и та же учетная запись на обоих устройствах, что, скорее всего, неверно для взятия телефона моей жены. - person TWiStErRob; 02.04.2017
comment
@TWiStErRob Разве это не означает, что для входа на устройство необходимо использовать ту же учетную запись? - person CamHart; 26.04.2017
comment
@CamHart Ты прав. Я думаю, что точка зрения TWiStErRob заключается в том, что у OP вряд ли есть учетная запись на телефоне их жены. Поэтому, хотя это может быть простой способ синхронизации данных между устройствами, он не обязательно отвечает всем требованиям вопроса. - person Mike; 26.04.2017

Взгляните на новый учебный курс для адаптеров синхронизации: http://developer.android.com/training/sync-adapters/index.html, чтобы узнать об основах отправки данных с вашего устройства на сервер.

На устройстве Android я предлагаю вам хранить свои задачи в контент-провайдере. Это поможет вам отслеживать обновления с момента последней синхронизации. Затем вы можете запросить поставщика во время синхронизации, отправить только обновленные данные и сохранить данные на сервере.

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

person Joe Malin    schedule 16.07.2013

Вы можете попробовать Google Firebase. Firebase предоставляет SDK для устройств Android и iOS. Кроме того, firebase поддерживает автономный режим и синхронизацию. Firebase также предоставляет услугу хранения объектов. Создать приложение Firebase проще, чем вы думаете. Взгляните на этот сервис firestore.

person VivekRajendran    schedule 08.04.2018

Вы можете ознакомиться с нашей платформой Rethync (бесплатное ПО с исходным кодом) . С его помощью вы можете упростить задачу обнаружения модификаций и синхронизировать только обновленные данные. Далее, Rethync предоставляет как клиентский, так и серверный API, так что вы можете создать свой собственный сервис (и разместить его на веб-сайте) или написать свой собственный транспорт для облачной службы по вашему выбору (в будущем мы предоставим некоторые транспорты). , сейчас они в разработке).

person Eugene Mayevski 'Callback    schedule 17.07.2013
comment
Похоже, это так и не вышло за пределы предварительного релиза. Это все еще активно разрабатывается? Любые обновления? Дорожная карта? - person IInspectable; 11.07.2016
comment
@IInspectable Он стабилен и полностью функционален и включает документацию. Если будет сообщено о проблеме, мы соответствующим образом обновим реализацию. Что касается будущих разработок - движок в его текущем состоянии является самодостаточным, т.е. любые новые возможности не будут вписываться в текущую концепцию движка синхронизации. С другой стороны, такие вещи, как TLS, уже есть (с использованием транспортов, поддерживающих TLS). - person Eugene Mayevski 'Callback; 12.07.2016