Ios 向用户显示iCloud同步正在进行

Ios 向用户显示iCloud同步正在进行,ios,core-data,icloud,Ios,Core Data,Icloud,我目前正在使用CoreData iCloud设置。每次用户在其一台设备中添加/删除/编辑实体时,更改都会同步到iCloud(如果可用),然后在打开应用程序时推送到其他设备 不幸的是,iCloud不是即时的。当用户在其第二台设备上打开应用程序时,需要10~20秒的可靠连接才能显示同步数据 是否有任何方法可以检测应用程序何时与iCloud连接,以通知用户实际发生了什么事情,并且应用程序正在工作(在某处显示一个小旋转器) 至少能够通过pull to refresh或其他方式手动触发iCloud更新。如

我目前正在使用CoreData iCloud设置。每次用户在其一台设备中添加/删除/编辑实体时,更改都会同步到iCloud(如果可用),然后在打开应用程序时推送到其他设备

不幸的是,iCloud不是即时的。当用户在其第二台设备上打开应用程序时,需要10~20秒的可靠连接才能显示同步数据

是否有任何方法可以检测应用程序何时与iCloud连接,以通知用户实际发生了什么事情,并且应用程序正在工作(在某处显示一个小旋转器)

至少能够通过pull to refresh或其他方式手动触发iCloud更新。如果能够向用户展示一些信息,告诉他“您的数据已经在路上了,请稍等一会儿”,那将是非常棒的


谢谢。

没有用于使用CoreData iCloud检查事务日志状态的文档化API。绝对没有办法“触发”iCloud更新,但要检查挂起的数据,您可能可以使用NSMetadataQuery和iCloud KVS将一些东西拼凑在一起,但这也将是不精确和不可预测的。希望在iOS8中添加此功能(您可能希望在使用雷达时对其进行归档)。

没有用于使用CoreData iCloud检查事务日志状态的文档化API。绝对没有办法“触发”iCloud更新,但要检查挂起的数据,您可能可以使用NSMetadataQuery和iCloud KVS将一些东西拼凑在一起,但这也将是不精确和不可预测的。希望这能添加到iOS8中(您可能希望在使用雷达时将其归档)。

看看这些示例应用程序,它们使用iCloud中日志文件的状态来确定何时正在进行上载或下载活动


看看这些示例应用程序,它们使用iCloud中日志文件的状态来确定何时正在进行上载或下载活动


它应该是100%可靠的,因为它直接监控同步引擎的活动,即使我只是作为一个新奇的东西来实现它。您甚至可以可靠地跟踪从保存到上载生成的事务日志文件的过程,或者从检测到未下载的文件到接收到导入通知的过程。在数据实际导入时,下载完成后但在“确实导入”通知发生之前,可能会有延迟。是吗?我没有花太多时间检查延迟,因为苹果iCloud在同步计时方面似乎有自己的想法。我无法弥补的差距是跨设备的。例如,当应用程序执行MOC保存时(如果有更改),您知道必须创建一个事务日志,并且必须将其上载到iCloud-因此您可以显示一些内容,向用户指示同步事务已启动以及何时完成。你不能从另一台设备上知道这一情况。判断你应用程序的“世界”是否同步的唯一方法是检查每个设备的iCloud文件是否已正确同步。一个给定的设备永远无法确定另一个设备本身没有等待上传。我暂时接受你的回答,认为这是解决这个问题的最准确的方法。这不是最好的,而且感觉很粗糙,但它是最好的。谢谢。它应该是100%可靠的,因为它直接监控同步引擎的活动,尽管我只是作为一个新奇的东西来实现它。您甚至可以可靠地跟踪从保存到上载生成的事务日志文件的过程,或者从检测到未下载的文件到接收到导入通知的过程。在数据实际导入时,下载完成后但在“确实导入”通知发生之前,可能会有延迟。是吗?我没有花太多时间检查延迟,因为苹果iCloud在同步计时方面似乎有自己的想法。我无法弥补的差距是跨设备的。例如,当应用程序执行MOC保存时(如果有更改),您知道必须创建一个事务日志,并且必须将其上载到iCloud-因此您可以显示一些内容,向用户指示同步事务已启动以及何时完成。你不能从另一台设备上知道这一情况。判断你应用程序的“世界”是否同步的唯一方法是检查每个设备的iCloud文件是否已正确同步。一个给定的设备永远无法确定另一个设备本身没有等待上传。我暂时接受你的回答,认为这是解决这个问题的最准确的方法。这不是最好的,而且感觉很粗糙,但它是最好的。非常感谢。