首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS App Store 审核拒绝 2.23:数据存储合规指南与 NSURLIsExcludedFromBackupKey 正确用法

     編輯:程式設計綜合問答

拒绝理由解读

2.23 - Apps must follow the iOS Data Storage Guidelines
On launch and content download, your app stores 6.99MB, which does not comply...

核心问题:可再生数据未标记排除备份,导致 iCloud 备份体积超标。

iOS 存储目录合规映射表

目录用途备份行为合规要求
Documents用户创建内容(文档、数据库)✅ 备份仅存用户不可再生数据
Library/Caches缓存、可再生下载数据❌ 不备份系统可随时清理
tmp临时文件❌ 不备份应用自行清理
Library/Application Support应用运行必需数据✅ 备份需标记排除备份

用户当前配置分析

  • ✅ Documents:仅存数据库,已加 NSURLIsExcludedFromBackupKey → 错误! 用户数据库应允许备份
  • ⚠️ Caches:存下载数据,已加排除备份 → 正确
  • ✅ tmp:录音文件,启动清理 → 正确

关键修复:正确使用排除备份标记

错误用法(用户代码)

[NSURL URLWithString:url] // 无法设置资源值!

正确用法

NSURL *fileURL = [NSURL fileURLWithPath:path]; // 必须用 fileURLWithPath
NSError *error = nil;
BOOL success = [fileURL setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:&error];
if (!success) {
    NSLog(@"设置排除备份失败: %@", error);
}

合规存储策略调整

// 1. 用户核心数据(数据库、文档) → Documents,允许备份
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject 
                    stringByAppendingPathComponent:@"user.db"];

// 2. 可再生下载数据(图片、离线包) → Caches,天然不备份
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject 
                      stringByAppendingPathComponent:@"downloads"];

// 3. 运行必需但可再生数据(配置、Token) → App Support + 排除备份
NSString *supportPath = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES).firstObject 
                        stringByAppendingPathComponent:@"config.plist"];
NSURL *supportURL = [NSURL fileURLWithPath:supportPath];
[supportURL setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:nil];

// 4. 临时文件(录音、压缩包) → tmp,用完即删
NSString *tmpPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"recording.m4a"];

验证清单

  1. 设置 → iCloud → 存储 → 管理存储 → 选择设备 → 查看 App 备份大小
  2. 模拟器/真机运行后,检查各目录文件归属
  3. 单元测试验证 NSURLIsExcludedFromBackupKey 设置成功
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved