CloudKit:当应用程序暂停时,CKOperations 不运行

Posted

技术标签:

【中文标题】CloudKit:当应用程序暂停时,CKOperations 不运行【英文标题】:CloudKit: CKOperations don't run when app is suspended 【发布时间】:2016-03-08 04:41:25 【问题描述】:

我正在收听来自 CloudKit 公共数据库的 CKSubscriptions 的远程通知。我想处理在应用程序暂停时收到通知的情况......我通过使用带有“等待启动可执行文件”选项的 Xcode 运行应用程序在我的设备上模拟这种情况。我注意到application:didReceiveRemoteNotification:fetchCompletionHandler 委托方法被正确调用,并且我在此之后排队了CKFetchNotificationChangesOperation 操作,但该操作从未运行。我没有收到任何 notificationChangedBlockfetchNotificationChangesCompletionBlock 回调。如果应用程序在前台运行并收到通知,则同样可以正常工作。

我已尝试将 CKOperation 和操作队列上的 QoS 设置为 NSQualityOfServiceUserInteractive,但这似乎也无济于事。

我也在 WiFi 上尝试这个,iPhone 以 100% 的电量插入我的电脑。

为了让 CKOperations 在后台运行,我还有什么需要研究的吗?

【问题讨论】:

如果设备实际上没有连接到调试器,似乎可以正常工作 【参考方案1】:

我猜你调用 fetch 完成处理程序太快了,这会暂停应用程序。您需要在所有操作结束时调用它。

【讨论】:

以上是关于CloudKit:当应用程序暂停时,CKOperations 不运行的主要内容,如果未能解决你的问题,请参考以下文章

当用户未登录 iCloud 时,我可以使用 CloudKit 在我的应用程序中使用订阅吗?

CloudKit 数据管理

CloudKit 仪表板未更新

CloudKit - 当用户在离线时添加、修改或删除对象时该怎么办?

如何找出 CloudKit 订阅何时被删除?

CloudKit 离线存储