我的应用被拒绝了,因为Apple发现在发布和/或内容下载时,我的应用程序存储了14.18 MB。
现在我试图跳过我在游戏中使用的所有图像和声音的备份。
到目前为止,我在我的app文件夹中创建了一个名为“Resources”的文件夹,如下所示:App Folder Scrshot
我在AppDelegate.m中做了下一步:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self addSkipBackupAttributeToItemAtURL:[self applicationDocumentsDirectory]];
return YES;
}
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
NSError *error = nil;
BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}
这不起作用。
我有两个问题:
1)我从一开始就做正确的事吗?我应该将所有图像和声音放在名为Resources的文件夹中,然后将skipBackup放在整个文件夹中,还是应该将它们放在其他地方? 如果是,那么在哪里? (我看到互联网的人在谈论“文档”文件夹......但我不知道该文件夹是什么,也不知道在哪里找到它。
2)如果我可以将所有内容放在“Resources”文件夹中,如何从代码中找到该文件夹?如何从Xcode本身创建该文件夹的URL?
提前致谢
答案 0 :(得分:0)
您应该使用您的应用提供内容。如果用户在3G / Edge上,由于连接问题,首次启动时下载内容不是一个好主意。
文档目录位于设备上,是您应用程序下的文件夹,由ios自动创建。 Apple Documentation
从资源文件夹中获取文件很简单files from resources
答案 1 :(得分:0)
之前我遇到过这个问题!问题不在于您存储的内容的大小,而是 存储它的位置。我的猜测是你将文件存储在NSDocumentDirectory
中,这很糟糕,因为这个目录只能用于存储用户自己创建的数据(文档,照片等)。添加NSURLIsExcludedFromBackupKey
是不够的。当它发生在我身上时,我将NSDocumentDirectory
更改为NSApplicationSupportDirectory
,我的应用程序获得批准。
<强>更新强>
最好先在NSApplicationSupportDirectory
中创建一个子目录,以便将文件存储在那里。
您的方法应该类似于:
- (NSURL *) applicationDocumentsDirectory{
NSString *appSupportDir = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) lastObject];
appSupportDir = [appSupportDir stringByAppendingPathComponent:@"MyAppDirectory"];
return [NSURL URLWithString:appSupportDir];
}
不要忘记先创建目录:
if (![[NSFileManager defaultManager] fileExistsAtPath:[self applicationDocumentsDirectory] isDirectory:NULL]) {
NSError *error = nil;
[[NSFileManager defaultManager] createDirectoryAtPath:[self applicationDocumentsDirectory] withIntermediateDirectories:YES attributes:nil error:&error];
}