CloudKit iOS:用户无法删除应用程序数据

Posted

技术标签:

【中文标题】CloudKit iOS:用户无法删除应用程序数据【英文标题】:CloudKit iOS: user can't delete application data 【发布时间】:2019-10-22 15:24:13 【问题描述】:

我尝试将 CloudKit 支持添加到我的 ios 应用程序中。我的目标是将数据保存到用户的 privateCloudDatabase 并能够在用户更换手机/重新安装应用程序时恢复它。 一切正常,但用户无法从 iCloud 中删除应用数据(从代码中我可以成功删除)

前提条件:用户设备已启用 iCloud

复制步骤(ios 13,但可以在任何 ios 上复制):

    从代码中将CKRecord 保存到用户的privateCloudDatabase 在用户设备上转到设置 > Apple ID(顶部)> iCloud > 管理存储 > 我的应用程序 > 删除数据 > 删除

预期结果:应用程序列表已更新,而我的应用程序不在列表中

实际结果:我的应用还在列表中

以下是我将记录添加到 iCloud 的方法:

let record = CKRecord(recordType: "backup", recordID: CKRecord.ID(recordName: "userName"))
let operation = CKModifyRecordsOperation(recordsToSave: [record], recordIDsToDelete: nil)
operation.savePolicy = .allKeys
operation.modifyRecordsCompletionBlock =  savedRecords, deletedRecords, error in
       print(error)        

CKContainer.default().privateCloudDatabase.add(operation)

我希望用户可以转到“设置”并手动从 iCloud 中删除应用数据。否则,如果用户删除我的应用程序,他将无法永远从 iCloud 中删除这些数据(是的,我尝试删除应用程序然后删除数据 - 结果是一样的)

视频:https://www.youtube.com/watch?v=UGk0hpi8gtA

问题:是错误还是我遗漏了什么?有什么办法可以解决这个问题?

更新:我在 app store 应用程序中发现,它可能使用 CloudKit,如果我安装它 - 它不能永远从我的 iCloud 存储中删除。 https://apps.apple.com/us/app/ulysses/id1225571038

【问题讨论】:

【参考方案1】:

我也试过了,应用程序并没有立即从列表中消失,但是如果你重新加载应用程序列表,它就可以工作了。请尝试以下步骤:

    从列表中删除应用程序。 等一下。 转到 iCloud 设置,然后返回 管理存储,应用程序应该会消失。

如果手动重新加载列表后还是不行,建议向苹果提交bug:feedbackassistant.apple.com

【讨论】:

您是否使用我示例中的代码添加了记录?我问是因为如果我使用“iCloud 文档”(ubiquityContainer)将数据添加到 iCloud,它可以正常工作,用户可以立即删除数据。我试图等待一分钟(甚至等了 2 天),尝试重新启动设备,尝试使用其他设备(从未安装我的应用程序的设备)从 iCloud 中删除数据 - 没有任何帮助,这个应用程序仍在我的 iCloud 列表中.你看过我附上的视频吗?这就是你的意思,除了等待一分钟,对吧?在这里提问之前,我在 feedbackassistant.apple.com 上填写了一个错误,但没有答案。

以上是关于CloudKit iOS:用户无法删除应用程序数据的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit 数据管理

清除/清除 CloudKit 容器的所有用户 iCloud 记录

CloudKit 和优先级

CloudKit iOS 10 错误:帐户无权访问 CloudKit 帐户

CloudKit - 无法从 iCloud 检索数据

CloudKit:区域已被用户清除