我开发了iPhone应用程序,其中包含80MB音频文件和应用程序包内的20MB图像。我接到了来自苹果的电话,其中说要更新我的应用程序以遵循IOS5存储指南,否则我的应用程序将从销售中删除。 我已阅读IOS 5存储指南,该指南根据应用程序要求在三个不同位置保存数据: -
只有用户生成的文档和其他数据,或者应用程序无法重新创建的文档和其他数据应存储在/ Documents目录中,并由iCloud自动备份。
可以重新下载或重新生成的数据应存储在/ Library / Caches目录中。您应该放在Caches目录中的文件示例包括数据库缓存文件和可下载内容,例如杂志,报纸和地图应用程序使用的文件。
仅临时使用的数据应存储在/ tmp目录中。虽然这些文件没有备份到iCloud,但请记住在完成这些文件后删除这些文件,这样他们就不会继续占用用户设备上的空间。
使用“不备份”属性指定应保留在设备上的文件,即使在低存储情况下也是如此。将此属性与可以重新创建的数据一起使用,但即使在低存储情况下也需要保留,以使应用程序正常运行,或者因为客户希望在脱机使用期间可以使用该数据。此属性适用于标记文件,无论它们位于何种目录中,包括Documents目录。这些文件不会被清除,也不会包含在用户的iCloud或iTunes备份中。由于这些文件确实使用设备上的存储空间,因此您的应用程序负责定期监视和清除这些文件。
因此,应用程序包不是icloud上的备份。那么我是否需要将应用程序包中的所有音频文件移动到文档目录或缓存中?
期待您的青睐回复。
答案 0 :(得分:2)
您的应用是应用包。没有它你的应用程序就不存在了。将这些文件复制到其他地方是没用的,因为它们会占用两次存储空间。
它不会备份到iCloud,因为可以从Appstore服务器再次下载应用程序包。因此它将占用iCloud备份空间而不会有用。应用程序包是“公共数据”,在所有设备上都是相同的,因为它无法更改。
我认为苹果会谈论别的事情。
答案 1 :(得分:1)
您应该将文件保存在文档目录下的private_Document文件夹中,并且不要备份标记...如果您将此标志应用于任何文件夹,则它将不会备份。
(BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL {
NSLog(@"in add skipBackUpAtrribute method.......");
const char* filePath = [[URL path] fileSystemRepresentation];
const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;
int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
}
答案 2 :(得分:0)
哟必须使用NSCachesDirectory
。我正在发布和更新我的一个客户应用程序,我们将报纸存储在Documents目录中。
从iOS5开始,此文件夹严格保留给用户自己创建的文档。这是一个混乱,因为你无法备份重要文件。您有责任下载应用程序需要的产品,文件或工件......