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