苹果不允许应用程序共享文档目录数据直接给用户(UIFileSharingEnabled键设置为true)

问题描述:

在我的应用程序中,我在用户的应用程序的文档目录中插入了一些图像,并且我还管理其中的一个sqlite文件。我在我的应用程序中启用了iTunes文件共享选项来备份PC中的应用程序数据。 当我把它上传到AppStore的,评审拒绝了注释的应用程序 -苹果不允许应用程序共享文档目录数据直接给用户(UIFileSharingEnabled键设置为true)

enter image description here


与我的应用程序的问题是在最后一段,它说,在文档文件夹中的文件应该只是文件用户需求访问。

我读了这本优秀的教程http://www.raywenderlich.com/1948/itunes-tutorial-for-ios-how-to-integrate-itunes-file-sharing-with-your-ios-app,但在这种情况下没有发现对我有用的东西。
请建议,“我应该加密数据并将其保存在doc目录中吗?”
或任何人有更好的方法,以便苹果批准我的应用程序。

在此先感谢。

+0

如果sqlite文件不能被用户看到,请不要将它放在Documents文件夹中。请记住,用户可以使用iTunes在“文档”文件夹中添加,重命名和删除文件。 – rmaddy

很多研究有关文件共享后,我发现改变文件的结构,我的应用程序,因为苹果公司的文档清晰地说:

enter image description here

有关UIFileSharingEnabled项的其他信息,请参阅信息Property List Key Reference

文档目录应该只包含旨在供用户自己使用的文件。 这可能是他或她在应用程序或某些媒体文件中创建的文档。

如果您提到的图像是用户生成的(并且它是您的应用程序的核心功能之一以创建此类图像) - 那应该没问题。

但是在文档中存储sqlite文件肯定是错误的。简而言之,它不是一个“文件”。所有数据库文件都可以存储在缓存目录中。

如果非常有必要通过iCloud同步该数据库,请在评论说明中提及此事实。

+3

不要将数据库文件存储在Caches文件夹中。该文件夹中的文件可以被删除。对于永远不应该被用户删除或直接访问的文件,使用'Application Support'文件夹。 – rmaddy

+0

感谢hybridcatt和rmaddy .. !!! 我管理sqlite数据库与图像(由用户添加),并通过iTunes我分享它,因为它是必要的sqlite文件总是与卡目前可用的应用程序,因为有关图像的信息不断更新在sqlite中,客户端的要求是,如果用户丢失她的设备,那么这个备份将在另一个设备上工作,这就是为什么我这样管理它,请告诉我是否将所有文档目录内容保存在加密表单中,然后苹果会批准appStore的应用程序,谢谢您的慷慨帮助。 – Nico

+2

让用户通过文件共享访问sqlite文件的问题是用户可以通过iTunes删除文件。这与提供备份功能相反。如果有的话,将sqlite文件保存在别处,当用户希望做一个备份时,在Documents文件夹中复制一份。更好的办法是一起压缩sqlite文件和图像,并将zip文件作为备份功能放入Documents文件夹中。 – rmaddy