1、未遵守苹果 iOS APP 数据储存指导方针
如果你的 App 有离线数据下载功能,尤其需要关注这一点。因为离线数据一般占用存储空间比较大,可以被重新下载和重建,但是用户往往希望系统存储空间紧时也依然能够妥妥的存在着,不会被 iOS 系统自动清理掉。所以不能放在 /Library/Caches 目录下(该目录在系统空间紧张时可能会被 iOS 系统清除)。 那就只能放在主目录 /Documents 或主目录 /Library/ 自定义文件夹下,这样才不会被 iOS 系统自动清理掉。但是这些数据可能会很大,如果放在主目录 /Documents 或主目录 /Library/ 自定义的文件夹下,会被 iCoud 自动同步,那么用户需要为了同步消耗不少流量,苹果可能会因此拒绝你的应用上架。所以需要在程序中给自定义的目录设置 “do not backup” 属性。
#import "sys/xattr.h" // 对指定的文件路径及路径文件夹内的文件夹和文件设置不备份到 iTunes 和 iCloud 属性 - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { NSString *path = URL.path; const char *filePath = [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; } - (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)path { const char *filePath = [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; }
关于数据存储需要注意的点,总结在下面:
1、关键数据
内容:用户创建的数据文件,无法在删除后自动重新创建
路径:主目录 /Documents
管理:iOS 系统即使遇到存储空间不足的情况下,也不会清除,同时会备份到 iTunes 或 iCloud 中2、缓存数据
内