Как синхронизировать идентификаторы клиентов с разных устройств (Android, iPhone и т. Д.) И идентификаторы внутреннего сервера - PullRequest
0 голосов
/ 01 февраля 2012

Я синхронизируюсь с использованием SyncAdapter, пользовательских ContentProvider и AccountManager сервисов. Я немного застрял с реализацией синхронизации. Мне очень помог пример SDK «SampleSyncAdapter» для Contacts , который хранит идентификаторы мобильного устройства (_id в Android) в таблицах сервера, поэтому, когда он отвечает грязным списком, устройство знает, добавить или обновить контент.

Означает ли этот шаблон, что мне нужно добавить новые столбцы на стороне сервера для каждого клиента? Я мог бы поддерживать другие платформы в будущем (например, идентификаторы данных iPhone - я не знаком с его SDK).

1 Ответ

1 голос
/ 01 февраля 2012

Используйте таблицу сопоставления в вашей базе данных на стороне сервера.

В основном:

DeviceID | DeviceItemID | ServerItemID
   Dev1        100           8912831
   Dev1        101           8819111
   Dev1        108           7717719
   Dev2        971           12091231
   ....        ...           ........
  • DeviceID - это столбец, который уникально идентифицирует клиента, то есть конкретный телефон Android.
  • DeviceItemID - это идентификатор элемента в базе данных клиента .
  • ServerItemID - это идентификатор элемента в базе данных сервера .

Объединение этой таблицы с элементами сервера позволяет вам отфильтровывать и точно определять, какие идентификаторы существуют на устройстве.

Этот подход используется в устаревшем протоколе синхронизации OMA DS (вы можете найти это вТелефоны Nokia и т. Д.).

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

...