如何强制 iCloud 在全新安装/首次启动时同步应用程序的数据?

Posted

技术标签:

【中文标题】如何强制 iCloud 在全新安装/首次启动时同步应用程序的数据?【英文标题】:How do I force iCloud to sync data of an App on fresh install / first launch? 【发布时间】:2020-09-23 05:49:15 【问题描述】:

在我正在开发的游戏中,我已经实现了 GKSavedGames,并且一切正常,除了如果游戏被卸载并重新安装或安装在新设备上,第一次初始启动 fetchSavedGamesWithCompletionHandler 返回 0 个已保存的游戏。

有没有办法强制 iCloud 将文件同步到设备?我曾尝试等待和回忆fetchSavedGamesWithCompletionHandler,但似乎没有任何效果。如果我立即重新启动应用程序,则所有保存文件都可用。

【问题讨论】:

【参考方案1】:

我不熟悉GKSavedGames,但是如果您使用 CloudKit 作为您的帖子标签所暗示的,那么以下方法可能会对您有所帮助。

    在您的应用中,检查是否存在类型为 DateUserDefault,名称类似于 lastUpdated。 如果lastUpdated 的值为nil(它将在全新安装的设备上),则执行CKQuery 以获取所有记录。 获取记录后,使用新的Date() 对象将lastUpdated 设置为“现在”。 您可以在将来使用lastUpdated 日期来检查过时的数据。例如,如果 lastUpdated 与现在相比超过 n 天,您可以再次拉取记录。

【讨论】:

以上是关于如何强制 iCloud 在全新安装/首次启动时同步应用程序的数据?的主要内容,如果未能解决你的问题,请参考以下文章

需要 iCloud 时如何处理首次启动体验?

CoreData 同步 iCloud 数据导致 App 启动超时被系统 watchdog 终止的原因及解决

CoreData 同步 iCloud 数据导致 App 启动超时被系统 watchdog 终止的原因及解决

App 启动时如何知道 CloudKit 的 iCloud 数据同步操作已经结束了?

App 启动时如何知道 CloudKit 的 iCloud 数据同步操作已经结束了?

iCloud 和 CoreData:更改为 iCloud Store 时的通知(使用现有 iCloud 数据首次启动)