从iOS 14或14.0.1开始,WiFi可以工作,但LTE不能
我有一个我正在开发的应用程序,它使用CloudKit,一直运行良好。在将iPhone升级到iOS 14.x后,它继续使用WiFi,但在LTE上,它不再完成CKFetchDatabaseChanges操作。我可以重新打开WiFi,一切正常,切换到LTE并挂起CKFetchDatabaseChanges操作。我甚至可以启动LTE,它挂起,切换到WiFi,同时仍在运行应用程序,它启动了一个正常的操作完成 有人能帮我弄清楚这是我的代码中的什么东西还是iOS错误吗从iOS 14或14.0.1开始,WiFi可以工作,但LTE不能,ios,networking,cloudkit,ios14,lte,Ios,Networking,Cloudkit,Ios14,Lte,我有一个我正在开发的应用程序,它使用CloudKit,一直运行良好。在将iPhone升级到iOS 14.x后,它继续使用WiFi,但在LTE上,它不再完成CKFetchDatabaseChanges操作。我可以重新打开WiFi,一切正常,切换到LTE并挂起CKFetchDatabaseChanges操作。我甚至可以启动LTE,它挂起,切换到WiFi,同时仍在运行应用程序,它启动了一个正常的操作完成 有人能帮我弄清楚这是我的代码中的什么东西还是iOS错误吗 我已经检查过这两个版本,它们都是xCod
我已经检查过这两个版本,它们都是xCode 12 iOS 14.x之前的版本和post版本,它们的行为都很奇怪?我会检查一些东西 ==1== 首先,确保您的应用程序的手机数据已打开:
Settings>Cellular>[您的应用]
==2==
要检查的第二件事是将您的操作设置为具有更高的优先级。它可能真的在工作,但速度真的很慢
let operation = CKFetchDatabaseChangesOperation()
//Set these...
operation.qualityOfService = .userInitiated
operation.queuePriority = .veryHigh
...
iCloud可能正在延迟数据传输,以避免使用过多的蜂窝数据。•要在celluar上使用CloudKit,您需要将-
CKOperation.qualityOfService
更改为。userInitiated
或。userInteractive
operation.qualityOfService=.userInitiated
如果此选项设置为.background
(默认值),则查询操作不会响应。(也不会出现超时错误。)
•必须启用celluar网络上的iCloud同步
Settings app -> iCloud -> iCloud Drive -> Use Celluar Data -> ON
operation.allowCellularAccess=true
还不够。就是这样。==2==奇怪的是,iOS 14或14.0.1刚刚开始出现这种情况。我之前没有设置这两个参数,所以它们处于默认值。在最后一次更新之前,这已经足够了。现在我已经明确地设置了它们,LTE又可以正常工作了。谢谢@Rob我们在提到的iOS版本中遇到了非常类似的问题,不过,我很惊讶这是我发现的唯一一条关于这一点的线索。你找到关于这个问题的更多信息了吗?iOS 14.2上仍在运行吗?感谢上面的回复解决了这个问题。我更改了代码以设置operation.qualityOfService和operation.queuePriority,然后一切又恢复正常。@Rob您是否碰巧遇到错误CKError 3?