问题描述
我有一个正在使用CloudKit的应用程序,并且运行良好。将iPhone升级到iOS 14.x之后,它仍然可以与WiFi一起使用,但是对于LTE,它不再完成CKFetchDatabaseChangesOperation。我可以重新打开WiFi,然后一切正常,切换到LTE并挂在CKFetchDatabaseChangesOperation上。我什至可以使用LTE进行启动,它可以挂起,同时仍在运行该应用程序时切换至WiFi,它可以正常完成操作。
任何人都可以帮助我弄清楚这是我的代码中的问题还是iOS的错误?
我检查了两个副本是否均符合xCode 12 iOS 14.x之前的版本,并且发布后的行为均具有相同的怪异方式?
解决方法
我会检查几件事。
== 1 ==
首先,请确保为您的应用打开了蜂窝数据:
for plate in plates:
print(df.loc[plate])
== 2 ==
要检查的第二件事是将操作设置为更高优先级。它实际上可能正在工作,但是真的很慢。
Settings > Cellular > [Your App]
iCloud可能会延迟数据传输以不使用过多蜂窝数据。
,• 要通过蜂窝网络使用 CloudKit,您需要将 - CKOperation.qualityOfService
更改为 .userInitiated
或 .userInteractive
operation.qualityOfService = .userInitiated
如果此选项设置为 .background
(默认),查询操作不会响应。 (您也不会收到超时错误。)
• 必须开启通过蜂窝网络的 iCloud 同步。
Settings app -> iCloud -> iCloud Drive -> Use Celluar Data -> ON
operation.allowsCellularAccess = true
还不够。