如何同步来自不同设备(Android,iPhone等)和后端服务器ID的客户端ID

时间:2012-02-01 13:50:32

标签: android synchronization android-syncadapter

我正在使用SyncAdapter,自定义ContentProviderAccountManager服务进行同步。我对同步实现有点不满。用于 Contacts 的SDK示例“SampleSyncAdapter”为我提供了很大的帮助,它将服务器表中的移动设备ID(_id存储在服务器表中),因此当它使用脏列表进行响应时,设备知道是否添加或更新内容。

这种模式是否意味着我必须为每个客户端添加新的服务器端列?我将来可能会支持其他平台(例如iPhone数据ID - 我不熟悉它的SDK)。

1 个答案:

答案 0 :(得分:1)

在服务器端数据库中使用映射表。

基本上:

DeviceID | DeviceItemID | ServerItemID
   Dev1        100           8912831
   Dev1        101           8819111
   Dev1        108           7717719
   Dev2        971           12091231
   ....        ...           ........
  • DeviceID将是唯一标识客户端的列,即 特定的Android手机。
  • DeviceItemID是客户端数据库中的项目标识符
  • ServerItemID是服务器数据库中的项目标识符

将此表与服务器项连接,可以过滤掉并准确找到设备上存在的标识符。

这是传统同步协议OMA DS中使用的方法(您可以在诺基亚手机等中找到它。)

如果您选择"多客户"这将是更好的选择。同步,即服务器上的一个特定数据集在多个客户端之间共享 - 例如,您可以向映射表添加列(例如更改计数器/最后修改)以允许您的服务器查找更新/删除和添加的项目和放大器;只发送它们。