gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:42:50 25 4
gpt4 key购买 nike

我正在使用 CloudKit存储公开可用的数据和新的 NSPersistentCloudKitContainer作为我的核心数据堆栈的一部分,用于存储/同步私有(private)数据。

当用户打开我的应用程序时,他们处于 4 种状态中的 1 种状态:

  • 他们是可以访问 iCloud 的新用户
  • 他们是可以访问 iCloud 的老用户
  • 他们是新用户,但由于某种原因无法访问 iCloud
  • 他们是老用户,但由于某种原因无法访问 iCloud

  • 状态 1 和 2 代表我的快乐之路。如果他们是新用户,我想在显示初始 View 之前用一些数据播种用户的私有(private)商店。如果他们是返回用户,我想从 Core Data 获取数据以传递给初始 View 。

    确定新老用户:
    我的计划是使用 NSUbiquitousKeyValueStore .我对此的关注是处理以下情况:
    下载应用程序->记录为之前启动过该应用程序->删除并在新设备上重新安装/安装该应用程序
    我假设 NSUbiquitousKeyValueStore接收更新需要一些时间,所以我需要等到它完成同步后再进入初始 View 。那么问题来了,如果他们无法访问 iCloud,会发生什么?怎么可能 NSUbiquitousKeyValueStore如果无法接收更新,请告诉我他们是否是回访用户?

    确定 iCloud 访问权限:
    根据我所做的研究,我可以检查 FileManager.default.ubiquityIdentityTokennil查看 iCloud 是否可用,但这不会告诉我原因。我将不得不使用 CKContainer.default().accountStatus了解为什么 iCloud 不可用。问题是这是一个异步调用,我的应用程序会在了解他们的帐户状态之前继续前进。

    我真的在这个问题上摸不着头脑。优雅地确保处理所有这些状态的最佳方法是什么?

    最佳答案

    这里没有“正确”的答案,但我不认为 N​​SUbiquitiousKeyValueStore 以任何方式获胜 - 就像你说的那样,如果他们没有登录 iCloud 或没有网络访问权限,它无论如何都不会为他们工作。我目前使用 NSUbiquitiousKeyValueStore 完成了一些与共享相关的工作,下次不会这样做。我真的希望 NSPersistentCloudKitContainer 支持在 iOS 14 中共享,我可以一举清除大部分 CloudKit 代码。

    如果您的应用在没有云访问的情况下无法正常运行,那么您可能只需要在屏幕上显示这一点,尽管总的来说这并不是一个非常令人满意的用户体验。我这样做的方式是将 iCloud 同步视为真正的异步(确实如此)。所以我允许用户开始使用该应用程序。然后您可以调用 accountStatus 以查看它是否在后台可用。如果是,则开始同步,如果不是,则等到它是,然后开始该过程。

    因此,用户可以在设备上无限期地独立使用该应用程序,并且当他们连接到互联网时,他们在任何其他设备上所做的一切都会合并到他们在这个新设备上所做的事情中。

    关于ios - 需要 iCloud 时如何处理首次启动体验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61315713/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com