0

我的应用程序刚刚被 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 文档存储可更新文件的位置。特别是如果想要备份和隐藏/不向用户公开数据。我的应用程序都是这种情况,我希望备份数据并且我不希望用户看到我的数据库。所以图书馆似乎完全正确。我唯一能想到的是资源目录中数据库的大小。我可以通过拉链来减少它。但是有什么限制呢?审阅者和文档都不能告诉我任何具体的内容。

那么实际上有什么问题呢?如果资源目录不是存储我的源数据库以进行初始设置的正确位置,我可以在我的项目中使用什么其他目录?

非常感谢任何提示。勒内

4

1 回答 1

0

收到 Apple 的回复,提到我应该将用户数据存储在与我提供的数据不同的数据库中。虽然我对此不是很热衷,因为它增加了不必要的代码复杂性,而且我的应用程序中的用户数据可能会比我提供的数据更大,但我想确保我现在得到了正确的解决方案. 我打算实现的是 2 个目录:/Library/UserDB 和 /Library/AppDB。AppDB 将包含交付的数据库,而 UserDB 将仅包含用户数据,我会将 AppDB 目录标记为非备份。猜猜这会让 Apple 高兴并让我的应用程序为此获得批准,对吗?在我开始实施之前,将不胜感激有关该方法的任何意见。

于 2012-04-28T09:03:13.313 回答