iOS: 有没有办法导出一个文件,只有相关的App才能read/write呢?

iOS: Is there a way to export a file so that only the related App can read/write it?

我的项目是用 swift/swiftui 最新版本编写的。现在用户可以将任何文件导出到默认文件夹(文件)。

我的问题:是否可以 encrypt/protect 以某种方式导出文件,以便只有应用程序本身可以再次 read/write 它?

Swift支持这种功能吗? 还是我必须为此实施解决方法?

谢谢!感谢您的帮助!

如果您不想让其他人看到该文件,请不要导出到 Documents。把它放在应用程序支持或类似的地方。您已被沙盒化,因此您不会被任何其他人看到该文件。

如果目标还在于防止文件被备份,那么您可以为此添加说明。假设您将文件的 URL 作为 myFileURL。然后(精神上供应周围的do...catch块):

var rv = URLResourceValues()
rv.isExcludedFromBackup = true
try myFileURL.setResourceValues(rv)

最后,如果目标是加密 数据 ,而不是真正的文件本身,则将其放入用户的钥匙串中。

您当然可以加密您的文件;这是一项相当大的工作,但如果正确完成,它可以很好地保证只有您的应用程序才能再次读取它。通常,@matt 的答案将是您的最佳选择——将其放在其他应用程序无法访问的地方。我能想到的唯一用例是加密它并将其存储到文档中是值得的,如果您需要能够使用其他应用程序移动(但不读取)文件 - 对自己说 e-mail或其他也在使用您的应用程序的人。在这种情况下,“文件”应用程序会让您在“文档”中查看文件,然后共享它们。

除非这种能力很重要,否则请使用@matt 的回答。如果您想走加密路线,Swift-Sodium 之类的东西是一个不错的起点。