应用程序因文档目录中的数据而被拒绝

时间:2013-09-24 03:14:11

标签: ios objective-c

在我的应用程序启动时,它将一个库从我的资源文件夹复制到iOS设备上的文档目录。这是第一次发布时的一次性过程,再也没有接触过。 Apple今天拒绝了我的应用程序:

  

我们发现您的应用不遵循iOS数据存储   指南,不符合App Store Review   准则。

     

iOS数据存储指南表明只有内容即   用户使用您的应用创建,例如文档,新文件,编辑等,   应该由iCloud支持。

     

您的应用使用的临时文件应仅存储在/ tmp中   目录;请记得删除存储在此位置的文件   当用户退出应用程序时。

     

可以重新创建但必须保持正常运行的数据   您的应用 - 或者因为客户希望它可以离线使用   使用 - 应标记为“不备份”属性。对于NSURL   对象,添加NSURLIsExcludedFromBackupKey属性以防止   备份相应的文件。对于CFURLRef个对象,请使用   相应的kCFURLIsExcludedFromBackupKey属性。


我不确定如何设置不备份属性或者它是否是我需要的。任何人都可以根据我的代码告诉我这是如何完成的?

-(void) progress
{
 NSFileManager *fileManager = [NSFileManager defaultManager];
 NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil;
NSString *dataPath = [documentPath stringByAppendingPathComponent:pathWeSet];

if (![fileManager fileExistsAtPath:dataPath]) {
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSString *dataPath = [bundlePath stringByAppendingPathComponent:pathWeSet];
timer = [NSTimer timerWithTimeInterval:0.4 target:self selector:@selector(updateProgressView) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
[timer fire];
if (dataPath) {
  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [fileManager copyItemAtPath:dataPath toPath:dataPath error:nil];
  });
  }
 }
}

由于

1 个答案:

答案 0 :(得分:3)

Apple发布了File System Programming Guide您应该阅读并遵循的内容。听起来您的库是应用程序的内部细节,用户不应该看到。因此,它不应该在Documents目录中。请考虑使用Library或Library / Caches目录。