应用程序必须遵守iOS数据存储指南,否则将被拒绝

应用程序必须遵守iOS数据存储指南,否则将被拒绝,ios,ipad,data-storage,Ios,Ipad,Data Storage,我开发了一个应用程序,可以在线下载mp3文件(大小接近6到8MB),并存储在NSDocumentDirectory中。我的应用程序今天被拒绝并说 "Apps must follow the iOS Data Storage Guidelines or they will be rejected" We found that your app does not follow the iOS Data Storage Guidelines, which is required per the

我开发了一个应用程序,可以在线下载mp3文件(大小接近6到8MB),并存储在NSDocumentDirectory中。我的应用程序今天被拒绝并说

"Apps must follow the iOS Data Storage Guidelines or they will be rejected"


 We found that your app does not follow the iOS Data Storage Guidelines, which is
 required per the App Store Review Guidelines. The iOS Data Storage Guidelines 
 indicate that only content that the user creates using your app, e.g., documents,
 new files, edits, etc., may be stored in the /Documents directory - and backed up
 by iCloud. 

 Temporary files used by your app should only be stored in the /tmp directory; 
 please remember to delete the files stored in this location when the user exits 
 the app. "
我曾经把音乐文件存储在NSDocumentDirectory中。 所以,这是我第一次这样做,我无法找出实际的问题。我应该如何重新提交我的应用程序以供接受

这是我的密码

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);



 NSString *documentsDirectoryPath = [[paths objectAtIndex:0]stringByAppendingPathComponent:[NSString stringWithFormat:@"psalmsMusic%d.mp3",i]];
NSLog(@"ddddddd psalmsMusic%d.mp3",i);
i++;


 NSLog(@"path %@",documentsDirectoryPath);
 [receivedData writeToFile:documentsDirectoryPath atomically:YES];

真的需要一些帮助。

一旦iCloud在Apple中实现,文档目录数据在某种程度上与iCloud存储相关。因此,苹果现在拒绝在文档目录中使用大量数据存储的应用程序

您需要将数据存储在其他位置。将MP3文件存储在其他位置

此链接可能对您有所帮助

我希望它能解决你的问题

另一个是

iOS数据存储指南指出,只有用户使用您的应用程序创建的内容(如文档、新文件、编辑等)可以存储在/documents目录中,并由iCloud进行备份

应用程序使用的临时文件应仅存储在/tmp目录中;请记住在用户退出应用程序时删除存储在此位置的文件。 可以重新创建但必须保留以确保应用程序正常运行的数据,或者因为客户希望该数据可供脱机使用,所以这些数据应标记为“请勿备份”属性。对于NSURL对象,添加NSURLSecludedFromBackupKey属性以防止备份相应的文件。对于CFURLRef对象,使用相应的kCFURLIsExcludedFromBackupKey属性


有关详细信息,请参阅。

苹果希望减少您的备份占用空间

首先,停止使用文档。这不合适

如果您能够相当轻松地再次下载文件,则应将其存储在不会备份的位置。我建议去储藏室。如果它们被清除,您应该重新下载它们

如果很难再次下载,则应将其存储在库文件夹中的其他位置

您可以使用以下方法找到缓存目录:

NSArray *paths = NSSearchPathForDirectoriesInDomains(
                        NSCachesDirectory, NSUserDomainMask, YES);
基本上,这就是您现在拥有的,但是您使用的不是
NSCachesDirectory
,而是
NSCachesDirectory


如果您控制文件名,就可以按原样操作。如果您不这样做,您可能应该创建一个子目录并从那里开始工作,这样您就不会与任何内容发生冲突。

您不能存储在
NSDocumentDirectory
中,因为此目录现在用于与iCloud同步。但是你可以使用
NSCachesDirectory
或使用temp目录作为苹果对商店音乐文件的评论状态。

指南说,只有不能从互联网上重新创建(下载)的重要文件才应该进入Documents目录,因为这是t

我的应用程序也因为同样的原因被拒绝了,解决方案非常简单,您不需要将下载的文件保存到Documents目录,而需要将它们保存到Cache目录,Cache目录是一个临时目录,它不会备份到iCloud,并且在某些情况下可以被操作系统随机删除。。。这是将文件保存到缓存目录的方式

NSString *filePath = [[self applicationCachesDirectory] stringByAppendingPathComponent:fileName];


BOOL flag = [[NSFileManager defaultManager] createFileAtPath:filePath contents: receivedData attributes:nil];
编辑

NSString *filePath = [[self applicationCachesDirectory]  stringByAppendingPathComponent:[NSString stringWithFormat:@"psalmsMusic%d.mp3",i]];
NSLog(@"ddddddd psalmsMusic%d.mp3",i);
i++;
BOOL flag = [[NSFileManager defaultManager] createFileAtPath:filePath contents: receivedData attributes:nil];
if ( flag )
  NSLog("success");

根据iOS存储指南(可在中找到),您应该将所有用户生成的内容放在Documents目录中,并将所有可重新下载的内容放在Caches目录中。因此,将sqLite数据库放在那里应该很好

这方面的背景是,从iOS 5开始,文档目录将备份到iCloud。由于许多应用程序倾向于将其完整数据存储在那里,iCloud备份变得相当大,这会占用可用空间并产生网络流量,这两种情况反过来会激怒用户,因为他/她想知道为什么。为了缓解这一问题,苹果现在似乎更仔细地研究了文档目录中保存的内容,以及这些内容是否可能是可重新生成的内容(例如,可下载的文件)

请注意,在iOS 5上,当设备上的可用空间不足时,操作系统可能会清除缓存目录,并且将清除该目录。因此,你的应用程序不能再像以前那样假设所有东西都在那里,而是每次你从缓存中访问某些东西时都必须重新检查


希望这对…有帮助

我的应用程序也因为同样的原因被拒绝-(2.3)

试试这个-

NSString*Path=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,是)

这样做的好处是,每当您的设备与云同步时,应用程序数据都不会同步,因为它位于NSCachesDirectory而不是NSDocumentDirectory中

缺点是,无论何时使用设备,如果设备内存不足,都会出现这种情况。然后CPU可能会清除缓存以获得可用空间。因此,如果您有任何数据可供脱机使用,您可能会丢失

2) 如果您不能使用NSCachesDirectory(可能是因为您的数据太重要),那么您可以这样做-

使用此方法并为数据库路径指定“AddSkipBackupAttributeToItemAttribute”


浏览此链接-

您能帮我提供一些代码来存储在NSCachesDirectory中吗?我将如何使用NSCachesDirectory来存储文件,对不起,我仍然有一些疑问。可以替换此代码吗?NSArray*Path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);用你的…?是的。这并不能保证你不会遇到苹果的额外问题,但它应该能解决这个问题。好的,非常感谢。还有一个疑问,我从哪里可以从我的ipad上下载这些数据,我是指位置。好的,你能比较一下我的代码和你的代码吗。我仍然对如何将mp3文件保存在内存中有一些疑问NSCachesDirectory@neerajPK检查编辑,,,您只需将文件名附加到CacheSDirectory路径。。。一