2013-04-09 87 views
5

我知道你不能从iOS捆绑包中删除一个项目,因为它是有签名的,但是有没有办法包含一个文件并且它不是“已签名”捆绑包的一部分,但是仍然存在安装?安装后从捆绑软件中删除文件

用例基本上是安装应用程序,读取文件的内容,存储在钥匙串中,然后删除文件。

感谢您的任何帮助和指导。

注意 - >应用程序无法访问互联网来获取此文件。 能够在阅读一次后删除文件(或擦除文件的内容)是我真正需要的。另外,我们在这里进行临时分发,我们没有通过任何应用审批流程。

+2

不要以为你可以从包中删除一个文件......你有没有考虑为你的应用程序设置某种服务器来检索文件的内容? – rocky 2013-04-09 18:11:23

+1

应用程序包对设备上的应用程序是只读的。所以你不能从你的包中删除一个文件,无论是签名还是未签名。 – 2013-04-09 18:13:43

+0

不幸的是,由于“商业限制”,我们无法远程获取文件,这是一个废话的借口,但我唯一的答案。和@MartinR好点。没有真正考虑这一部分。我猜,有没有办法用文件预先填充文档文件夹? – Breland 2013-04-09 18:18:57

回答

5

简短的回答是否。应用程序包是只读的。

正如其他人所指出的那样,在需要可编辑的包中传递数据的常用解决方案是将数据从应用程序包复制到文档(或其他应用程序文件夹),以便您拥有可编辑的副本。但是,您仍然无法从软件包中删除任何内容。

由于您的项目有限制,您无法通过Internet传输数据,并且您通过Ad-Hoc分发交付应用程序,所以您的主要担心是交付的文件无法访问,即使在监狱破碎的设备。

由于您无法删除文件以使其无法读取,因此您的下一个最佳选择是对文件进行加密以使其无法读取。您的应用可以解密内容,使用它并处理解密后的版本。当然,这仍然不是防弹的,因为解密需要一个你必须保护的密钥,但是它要像你要得到的那样是防弹的。

+0

到目前为止,最好的解决方案,那么,我猜,最好的方法是“安全地”获得设备的密钥? – Breland 2013-04-09 18:55:25

+2

导出密钥,就像使用应用程序中某个文件的CRC-32校验和一样,使用其他值进行哈希处理,所以密钥不会存储在编译后的代码中,相反,它们必须通过程序,看看你是如何得到的关键。您可以通过考虑时间来限制其时间,但是您需要添加用户设备时间必须准确的要求。 – 2013-04-09 19:04:18