【发布时间】: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
【问题讨论】: