我正在使用SyncAdapter
,自定义ContentProvider
和AccountManager
服务进行同步。我对同步实现有点不满。用于 Contacts 的SDK示例“SampleSyncAdapter”为我提供了很大的帮助,它将服务器表中的移动设备ID(_id
存储在服务器表中),因此当它使用脏列表进行响应时,设备知道是否添加或更新内容。
这种模式是否意味着我必须为每个客户端添加新的服务器端列?我将来可能会支持其他平台(例如iPhone数据ID - 我不熟悉它的SDK)。
答案 0 :(得分:1)
在服务器端数据库中使用映射表。
基本上:
DeviceID | DeviceItemID | ServerItemID
Dev1 100 8912831
Dev1 101 8819111
Dev1 108 7717719
Dev2 971 12091231
.... ... ........
将此表与服务器项连接,可以过滤掉并准确找到设备上存在的标识符。
这是传统同步协议OMA DS中使用的方法(您可以在诺基亚手机等中找到它。)
如果您选择"多客户"这将是更好的选择。同步,即服务器上的一个特定数据集在多个客户端之间共享 - 例如,您可以向映射表添加列(例如更改计数器/最后修改)以允许您的服务器查找更新/删除和添加的项目和放大器;只发送它们。