- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的应用程序第二次被拒绝,我浪费了 3 周 :(
第一次提交时,我只排除了目录在 iCloud 中的备份。苹果拒绝...
第二次提交时,我将下载的目录和图片排除在 iCloud 中的备份之外。 Apple 再次拒绝...Apple 还提示我的应用内购买没有“恢复”功能,而事实上,我确实有一个“恢复”按钮,并且在我测试时它有效。
我已经按照 Apple 的建议完成了,使用 NSURLIsExcludedFromBackupKey 将文件排除在备份之外。 Macmade 在 stackoverflow here 上发表了一条有趣的评论:
sometimes Apple reviewers think your data can be re-generated, when it's not. Then you'll have to explain why the data has to be backed-up
审稿人误解的频率有多少,我们必须向他们解释内容需要离线且不可重新生成?
这是我用来从 iCloud 中排除我的文件和目录的代码。你发现任何问题了吗?
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
// There's a chance the download failed, but don't assert here
//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;
}
//Download picture from Google and exclude it from being backed-up in iCloud
- (void)downloadFetcher:(GTMHTTPFetcher *)fetcher
finishedWithData:(NSData *)data
error:(NSError *)error
{
if (error == nil) {
// successfully retrieved this photo's data; save it to disk
GDataEntryPhoto *photoEntry = [fetcher propertyForKey:@"photo entry"];
// Create album directory if it doesn't already exist
NSString *path = [self findOrCreateApplicationSupportSubPath:[photoEntry albumTitle]];
path = [path stringByAppendingPathComponent:[[photoEntry title] stringValue]];
if (path != nil) {
// Write to disk
BOOL didSave = [data writeToFile:path
options:NSDataWritingAtomic
error:&error];
if (didSave) {
// Exclude file from being backed up in iCloud
NSURL *url = [NSURL fileURLWithPath:path];
BOOL excludeBackupResult = [self addSkipBackupAttributeToItemAtURL:url];
if (excludeBackupResult == NO) {
NSLog(@"Error excluding FILE from iCloud: %@", path);
}
// Update the download progress bar
_downloadedFileCounter = _downloadedFileCounter + 1;
float progress = _downloadedFileCounter / kMaleWireframeImagesTotal;
[self updateProgress:progress];
// The download completed. -2 just incase a package is lost, but let the user move on...
if (_downloadedFileCounter >= _downloadableFilesTotal -2) {
[_panel6 downloadCompleted];
}
} else {
// error saving file. Perhaps out of space? Write permissions error?
NSLog(@"Save anatomy picture failed: %@", error.localizedDescription);
}
} else {
NSLog(@"downloadFetcher: Cannot create directory");
}
} else {
NSLog(@"downloadFetcher failed: %@", error);
}
}
//Create directory and exclude it from being backed-up in iCloud
-(NSString*)findOrCreateApplicationSupportSubPath:(NSString*)subPath
{
NSString *resolvedPath;
NSArray *appSupportDir = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
if ([appSupportDir count] != 0) {
resolvedPath = [appSupportDir objectAtIndex:0];
// Append the name of this application
NSString *executableName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleExecutable"];
resolvedPath = [resolvedPath stringByAppendingPathComponent:executableName];
resolvedPath = [resolvedPath stringByAppendingPathComponent:subPath];
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:resolvedPath]) {
// Path doesn't exist, creates it
NSError *error;
BOOL successful = [manager createDirectoryAtPath:resolvedPath withIntermediateDirectories:YES attributes:nil error:&error];
if(!successful) {
NSLog(@"ERROR creating APP Support Sub-Directory: %@", error.localizedDescription);
return nil;
} else {
// Exclude path from backing-up in iCloud
NSURL *url = [NSURL fileURLWithPath:resolvedPath];
BOOL excludeBackupResult = [self addSkipBackupAttributeToItemAtURL:url];
if(!excludeBackupResult){
NSLog(@"Error excluding DIRECTORY from iCloud backup. This is a violation to their guideline.");
return nil;
}
}
}
} else {
NSLog(@"No Application Support Path available");
return nil;
}
return resolvedPath;
}
最佳答案
我认为诀窍是添加 NSURLIsExcludedFromBackupKey 或确保该目录在文档目录之外。我通过将我的文档移动到 Library/Application Support 文件夹来做到这一点(因为它在/tmp 或/Caches 文件夹中没有意义):
- (void)createNewRefFolder
{
NSError *error;
// store in /Library/Application Support/BUNDLE_IDENTIFIER/Reference
// make sure Application Support folder exists
NSURL *applicationSupportDirectory = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory
inDomain:NSUserDomainMask
appropriateForURL:nil
create:YES
error:&error];
if (error) {
NSLog(@"KCDM: Could not create application support directory. %@", error);
}
NSURL *referenceFolder = [applicationSupportDirectory URLByAppendingPathComponent:@"Reference" isDirectory:YES];
if (![[NSFileManager defaultManager] createDirectoryAtPath:[referenceFolder path]
withIntermediateDirectories:YES
attributes:nil
error:&error]) {
NSLog(@"KCDM: Error creating Reference folder: %@ ...", error);
}
BOOL success = [referenceFolder setResourceValue:@YES forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
NSLog(@"KCDM: Error excluding %@ from backup %@", referenceFolder, error);
}
}
关于ios - 从 iCloud 备份中排除 : NSURLIsExcludedFromBackupKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25517489/
我的 iPhone 应用程序包含大约 500 MB 数据。并且应用程序将离线使用该数据。所以我将该文件夹标记为不要在 iTunes 上备份/复制。所以我使用下面的网址: https://gist.gi
我的文档目录中有一个巨大的文件和目录树用于缓存。 按照建议,我将使用 NSURLIsExcludedFromBackupKey 来防止 iTunes 使用应用程序保存此数据。 我可以在我的根目录 UR
我试图阻止整个文件夹被 iTunes 备份。我关注了技术报告 http://developer.apple.com/library/ios/#qa/qa1719/_index.html但似乎 falg
我的应用最近因以下原因被拒绝: 2.23: Apps must follow the iOS Data Storage Guidelines or they will be rejected 这是因为
我如何确保使用模拟器为所有文件/文件夹正确设置 NSURLIsExcludedFromBackupKey(我目前没有可用的真实设备)? 最佳答案 您可以使用以下方式检查: NSError *error
我正在尝试设置属性 NSURLIsExcludedFromBackupKey 但找不到文件夹(或文件,如果我尝试分别对每个文件执行此操作)异常。 代码如下: override func viewDid
在 React Native 中我们有: type MkdirOptions = { NSURLIsExcludedFromBackupKey?: boolean; // iOS only };
我的应用被拒绝了,因为我将应用内购买数据保存在 iPhone 的文档文件夹中。 Data that can be recreated but must persist for proper funct
我的应用程序第二次被拒绝,我浪费了 3 周 :( 第一次提交时,我只排除了目录在 iCloud 中的备份。苹果拒绝... 第二次提交时,我将下载的目录和图片排除在 iCloud 中的备份之外。 App
我的应用因未遵循“iOS 数据存储指南”而多次被应用商店拒绝。我已经按照apple review team的建议给所有的文档目录都标上了“不备份”的属性,如图: - (BOOL)addSkipBack
我想为我的 Realm 文件设置 NSURLIsExcludedFromBackupKey。原因是因为我想将它从 iCloud 中排除。我有以下代码: public class func config
我的应用程序被拒绝,因为似乎 7 MB 存储在文档文件夹中,并且它们会自动发送到 icloud。所以我循环了所有将通过这种方法写入文档文件夹的文件: - (BOOL)addSkipBackupAttr
Apple 拒绝了我们的申请,因为我们在 localStorage (/Documents) 下存储供离线查看的文件这是消息的摘录,我们收到了: Data that can be recreated
与许多 iOS 开发人员一样,我在使用 NSURLIsExcludedFromBackupKey 时遇到过应用程序在 5.1 之前的系统上崩溃的问题。 很好地描述了如何评估此线程上此 key 的存在:
可用性检查似乎工作正常,但我似乎无法设置 NSURLIsExcludedFromBackupKey 键而不会在启动时发生崩溃: dyld: Symbol not found: _NSURLIsExcl
由于我在 iPhone 上保存一些下载文件的方式,我正在与应用程序拒绝作斗争。 我已经实现了 NSURLIsExcludedFromBackupKey 但我不清楚我是否正确地执行了它。我应该将 NSU
我看到这显然是可能的 submit apps without Lion installed , 但我的应用程序下载了一些大文件,需要根据 Apple storage guidelines 保存这些文件
我是一名优秀的程序员,十分优秀!