首页 > 代码库 > ios应用, 设置不自己主动备份到iCloud

ios应用, 设置不自己主动备份到iCloud

原创文章,转载请注明出处

ios项目,假设有内置下载或者程序动态生成文件的话,就要注意所下载或生成的文件,要不要自己主动备份到iCloud

假设没有合适的理由就自己主动上传大文件的话,可能在不能通过应用审核. 收到一下类似这种答复

We also found that your app does not follow the iOS Data Storage Guidelines, which is required per the App Store Review Guidelines.

比如有人遇到相同问题 http://stackoverflow.com/questions/16239147/ios-do-not-back-up-attribute

苹果给出的设置方法:官方文档 https://developer.apple.com/Library/ios/qa/qa1719/_index.html

应用到项目中, 详细代码例如以下

#define DownLoad_Directory "Download_Dir"

#pragma mark Download_Dir
void DeviceClass::initDownloadDir(){
    string l_strDocumentDir = cocos2d::CCFileUtils::sharedFileUtils()->getWritablePath();
    l_strDocumentDir.append(DownLoad_Directory);
    
    NSString* l_strDownloadDir = [NSString stringWithUTF8String:l_strDocumentDir.c_str()];
    NSError* l_error;
    if (![[NSFileManager defaultManager] fileExistsAtPath:l_strDownloadDir]){
        [[NSFileManager defaultManager] createDirectoryAtPath:l_strDownloadDir withIntermediateDirectories:NO attributes:nil error:&l_error]; //Create folder
        
        // exclude downloads from iCloud backup
        NSURL *url = [NSURL fileURLWithPath:l_strDownloadDir];
        if(strcmp(g_systemVersion.c_str(), "5.1") >=0 ){
            if ([url setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&l_error] == NO) {
                NSLog(@"Error: Unable to exclude l_strDownloadDir from backup: %@", l_error);
            }
        }
    }
    
    //this->setDonotBackupInICloud();
}
就是在可写文件夹下建立一个新文件夹, 存放下载文件(须要的话,自己主动生成的文件也放到这), 并标记这个文件夹不会被上传到iCloud

感谢梅俊同事的提醒


測试方法:

设置->iCloud->管理储存空间->备份(假设有多设备的话,选择设备)

应用多的话,点击"显示全部应用" 查到你的应用,在iCloud上备份内容的总容量.

打开和关闭这个接口, 会发现, 你的应用在iCloud上的备份mwjg容量是不是一样.

ios应用, 设置不自己主动备份到iCloud