2016-02-07 2 views
0

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

Я боюсь, какой подход является более безопасным для удержания синхронизации времени, чтобы предотвратить потерю данных по причинам, как отключение или какой-либо ошибки в синхронизации процесса:

  1. текущий подход (провести время последней синхронизации на сервер)?
  2. провести последнюю синхронизацию в базе данных клиентов (подлежит взлому?)?
  3. определение пользовательского процесса, обеспечивающего доставку данных (например, подтверждение онлайн-платежей)?
+0

Как правило, клиент должен знать, когда была последняя синхронизация, и получить то, что необходимо ... Но как «подвергать взлому» проблему? Это временная метка. В худшем случае он сбрасывается или аннулируется, и клиент выполняет полную синхронизацию. –

+0

Спасибо. Почему клиент должен знать последнее время синхронизации? –

+1

Поскольку пользователь может сбросить (очистить данные приложения, удалить, ...) в любое время –

ответ

1

В целом большинство подходов к серверам и API-интерфейсам не имеют гражданства.

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

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

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

Все это сказало, что это сильно зависит от ваших реальных целей и того, чего вы пытаетесь достичь.

1

Я бы сделал так: после того, как новые данные будут получены, клиент должен отправить подтверждение на сервер ... Таким образом, сервер будет уверен в том, что последний момент синхронизации с клиентом ... и будет избегать любых потерь данных из-за независимо от того, Причина (связь потеряна и т. д.)