Iphone IOS 5存储指南

Iphone IOS 5存储指南,iphone,objective-c,Iphone,Objective C,我开发了一款iPhone应用程序,该应用程序包中包含80MB音频文件和20MB图像。我接到苹果公司的电话,要求更新我的应用程序,使其符合IOS5存储指南,否则我的应用程序将被取消销售。 我已经阅读了IOS 5存储指南,该指南根据应用程序要求将数据保存在三个不同的位置:- 只有用户生成的或应用程序无法重新创建的文档和其他数据才应存储在/documents目录中,并由iCloud自动备份 可以再次下载或重新生成的数据应存储在/Library/Caches目录中。应放入缓存目录的文件示例包括数据库缓存

我开发了一款iPhone应用程序,该应用程序包中包含80MB音频文件和20MB图像。我接到苹果公司的电话,要求更新我的应用程序,使其符合IOS5存储指南,否则我的应用程序将被取消销售。 我已经阅读了IOS 5存储指南,该指南根据应用程序要求将数据保存在三个不同的位置:-

  • 只有用户生成的或应用程序无法重新创建的文档和其他数据才应存储在/documents目录中,并由iCloud自动备份

  • 可以再次下载或重新生成的数据应存储在/Library/Caches目录中。应放入缓存目录的文件示例包括数据库缓存文件和可下载内容,如杂志、报纸和地图应用程序使用的内容

  • 仅临时使用的数据应存储在/tmp目录中。尽管这些文件没有备份到iCloud,但请记住在处理完这些文件后删除它们,以免它们继续占用用户设备上的空间

  • 使用“请勿备份”属性指定即使在存储空间较低的情况下也应保留在设备上的文件。将此属性用于可以重新创建但即使在存储空间较低的情况下也需要保留的数据,以确保应用程序正常运行,或者因为客户希望它在脱机使用时可用。此属性适用于标记的文件,无论它们位于哪个目录中,包括Documents目录。这些文件不会被清除,也不会包含在用户的iCloud或iTunes备份中。因为这些文件确实使用设备存储空间,所以您的应用程序负责定期监视和清除这些文件

  • 因此,由于应用程序包不是icloud上的备份。那么,我是否需要将所有音频文件从应用程序包移动到文档目录或缓存


    期待您的回复

    您的应用程序就是应用程序包。没有它,你的应用程序就不存在。将这些文件复制到其他地方是没有用的,因为它们会占用存储空间两次

    它没有备份到iCloud,因为可以从Appstore服务器再次下载应用程序包。因此,它会占用iCloud的备份空间,而没有任何用处。应用程序包是“公共数据”,在所有设备上都是相同的,因为它无法更改


    我认为苹果谈论的是其他一些东西

    您必须使用
    NSCachesDirectory
    。我正在发布和更新我的一个客户应用程序,我们将报纸存储在文档目录中


    从iOS5及以后版本中,此文件夹严格保留给用户自行创建的文档。这是一个混乱的原因,你不能备份重要的文件。您有责任允许下载您的应用程序工作所需的产品、文件或工件

    您应该使用“不备份”标志将文件保存在文档目录下的私有文档文件夹中。。。如果将此标志应用于任何文件夹,则它将不会备份

    (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;
    }
    

    苹果确实谈论了一些其他的事情:关于你的应用程序在运行时创建的文件(例如,通过使用
    [NSData writeToFile:atomically:
    打开
    ,或其他任何方式)。@DarkDust我已经根据IOS 5存储指南制作了我的应用程序。将所有内容放入文档文件夹并标记“无属性”。但我已经阅读了苹果公司的其他指南,即你需要为你的应用程序支持的所有IOS版本编译你的应用程序。那么,我需要在5.0.1版本的代码中做些什么更改呢?我可以将我的所有文件放在documnet文件夹或缓存中吗?如果您遵守iOS 5 iCloud关于文件存储位置/方式的指导原则,那么您也可以使用iOS<5。即使在iOS<5上设置文件属性也有效,只是没有任何效果。简而言之:你不需要改变任何东西。谢谢巴勃罗的回复。我已经更改了代码,并包含了一些条件,例如,如果设备OD版本为5.0.1或更高,我将数据保存在NSDOCUMNTDirectory()上,并带有“不备份”字样,如果版本<5.0,则我将数据保存在NSCacheDirectory中。我正在写吗?这是正确的。一旦我更改了应用程序中的文件夹,苹果就会验证更新。如果您觉得有用,请检查答案是否有效:)您可能还想实现一个小功能,将保存到文档中的所有内容移动到缓存中。只想添加到