gpt4 book ai didi

ios - iCloud 如何在监听 NSPersistentStoreDidImportUbiquitousContentChangesNotification 时向我的应用程序发送通知

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:43:12 25 4
gpt4 key购买 nike

我需要通过 Core Data 将数据保存在 iCloud 和网络服务上。

我想在网络服务上的数据发生变化时通知我的应用程序,就像 iCloud 在 iCloud 上保存的数据发生变化时通知我的应用程序一样。

为了处理 iCloud 的通知,我必须在 NSPersistentStoreDidImportUbiquitousContentChangesNotification 上推送一个监听器,我想使用相同的机制来处理对我的网络服务上持久保存的数据所做的修改。

那么,我想知道 iCloud 如何通知我的应用触发 NSPersistentStoreDidImportUbiquitousContentChangesNotification 通知?我怎样才能在我的网络服务和我的应用程序之间做同样的事情?

谢谢!

最佳答案

Apple 没有记录完整的过程,但目标是您可以像对待 NSManagedObjectContextDidSaveNotification 一样对待 NSPersistentStoreDidImportUbiquitousContentChangesNotification。也就是说,您可以合并来自 iCloud 的更改,就好像您正在合并对应用中不同托管对象上下文所做的更改一样。

iCloud 通知涉及您无权访问且无法在 iOS 上复制的内容。具体来说,它在 iOS 上使用一个名为 ubiquity daemon (ubd) 的单独进程。它在您的应用程序之外独立运行,并负责与 iCloud 服务通信以发送/接收任何新的更改。当它收到新的更改时,它会更新您的持久存储文件并通知您的应用程序。由于您无法在 iOS 上运行外部进程,因此即使您知道它是什么,也无法复制确切的流程。

最接近的方法是启动一个单独的线程或队列,以尽可能多地复制 ubd。该线程将:

  • 从您的网络服务下载新数据
  • 创建一个新的托管对象上下文并使用此上下文保存新数据
  • 要么稍等片刻并重复该过程,要么退出并留给您稍后再重复。

保存这些更改后,NSManagedObjectContextDidSaveNotification 将自动发布。您可以采用与处理 NSPersistentStoreDidImportUbiquitousContentChangesNotification 大致相同的方式来处理它。如果您希望仅当您的应用从网络服务接收到新数据时才出现通知,您可以在保存这些更改后发布该通知。

关于ios - iCloud 如何在监听 NSPersistentStoreDidImportUbiquitousContentChangesNotification 时向我的应用程序发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23499539/

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