我有一个使用Azure Mobile Sync的iOS / Android应用程序。大多数情况下,一切都会按您的预期进行,但是有一种情况困扰着我很多。情况是:
电话A创建一条记录。 电话B创建一条记录。 电话A更新电话B的记录。 电话B更新电话A的记录。 电话C从云端正确获取记录创建和最新更新。 电话A拥有原始记录,但未能提取电话B的更新。 手机B拥有原始记录,但无法获取手机A的更新。
我已经确认没有同步冲突,并且正在提取数据,并且在大多数情况下不会发生这种情况。通常,电话A / B / C都已正确更新。我从Android手机中提取了sqlite数据库,并检查了_operations
表,但没有看到有关记录的任何同步操作。就像系统认为它已经是最新的并且不尝试同步。
是否有一种方法可以从云中强制提取所有内容?谢谢!
答案 0 :(得分:1)
这就像系统认为它已经是最新的并且不尝试同步。
是否有一种方法可以从云中强制提取所有内容?谢谢!
我假设您使用的增量同步描述如下:
增量同步:拉操作的第一个参数是仅在客户端上使用的查询名称。如果您使用非空查询名称,则Azure Mobile SDK将执行增量同步。 每次拉操作返回一组结果时,该结果集中的最新updateAt时间戳存储在SDK本地系统表中。随后的拉取操作仅检索该时间戳之后的记录。
您可以关注How offline synchronization works 的详细信息。
您可以尝试传递null
作为查询ID,然后将在每个PullAsync
请求中检索所有记录,如下所示:
await todoTable.PullAsync(null, syncTable.Where(u => u.xxx == "xxx"));
此外,您可以在遇到此问题时利用提琴手捕获网络跟踪,然后可以检查特定的请求参数以缩小此问题的范围。