我的应用程序刚刚被 Apple 拒绝,原因如下:
2.23
我们发现您的应用未遵循 App Store 审核指南所要求的 iOS 数据存储指南。
特别是,我们发现在启动和/或内容下载时,您的应用程序存储 10.3 MB。要检查您的应用存储了多少数据:
- 安装并启动您的应用
- 转到设置 > iCloud > 存储和备份 > 管理存储
- 如有必要,点击“显示所有应用”
- 检查您应用的存储空间
iOS 数据存储指南指出,只有用户使用您的应用程序创建的内容,例如文档、新文件、编辑等,可以存储在 /Documents 目录中 - 并由 iCloud 备份。
我所做的是,我在资源文件夹中提供大约 10 MB 的数据库,并在初始启动时将该数据库复制到库路径(参见下面的代码)。在设备设置中启动后查看我的应用程序设置时,它实际上说,文档和数据文件夹包含这 10 MB 的数据。该应用程序安装后不再需要该数据库,因此我只是尝试在使用 removeItemAtPath 完成复制时从资源文件夹中删除数据库。但似乎存在许可问题。
这是我在初始启动时用来填充数据库的代码:
// Copy the database from the app resource, if it is not already existing in the library path
- (void) copyDatabaseIfNeeded {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *dbPath = [documentsDir stringByAppendingPathComponent:@"abiliator.sqlite3"];
BOOL success = [fileManager fileExistsAtPath:dbPath];
if(!success) {
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"abiliator.sqlite3"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];
if (!success) {
NSLog(@"Failed to create writable database file with message '%@'.", error);
}
else {
success = [fileManager removeItemAtPath:defaultDBPath error:&error];
if (!success) {
NSLog(@"Failed to remove the source database file with message '%@'.", error);
}
}
}
}
在对该问题进行了数小时的研究之后,我实际上很确定,我根本没有做错任何事情。库路径是根据 Apple 文档存储可更新文件的位置。特别是如果想要备份和隐藏/不向用户公开数据。我的应用程序都是这种情况,我希望备份数据并且我不希望用户看到我的数据库。所以图书馆似乎完全正确。我唯一能想到的是资源目录中数据库的大小。我可以通过拉链来减少它。但是有什么限制呢?审阅者和文档都不能告诉我任何具体的内容。
那么实际上有什么问题呢?如果资源目录不是存储我的源数据库以进行初始设置的正确位置,我可以在我的项目中使用什么其他目录?
非常感谢任何提示。勒内