应用拒绝原因:3.0 在你提交之前:ICLOUD 即使在 NSURLIsExcludedFromBackupKey 属性设置之后

app rejection reason: 3.0 BEFORE YOU SUBMIT: ICLOUD even after NSURLIsExcludedFromBackupKey attribute set

我的应用程序因同样的原因“3.0 BEFORE YOU SUBMIT: ICLOUD”被拒绝了 2 次,即我的应用程序商店数据在用户的 iCloud 中。 Apple 是这样说的:

提交之前

在启动和内容下载时,该应用程序仍会在用户的 iCloud 上存储 7MB,这不符合 iOS 数据存储指南。

为了澄清,这是指应用程序允许在 iCloud 设备备份期间备份到用户 iCloud 帐户的数据。如果数据是由应用程序在启动时生成的(在这种情况下),则不适合使用 iCloud 进行备份。仅当用户生成和创建内容(文档、照片、电子表格等)时才允许大量使用 iCloud 备份。

后续步骤

请确认只有用户使用您的应用程序创建的内容(例如文档、新文件、编辑等)会根据 iOS 数据存储指南。此外,检查您的应用程序使用的任何临时文件是否仅存储在 /tmp 目录中;请记住在确定不再需要时移除或删除存储在此位置的文件。

可以重新创建但必须保留以确保您的应用程序正常运行的数据 - 或者因为用户希望它可以离线使用 - 应该用 "do not back up" 属性。对于 NSURL 对象,添加 NSURLIsExcludedFromBackupKey 属性,防止对应文件被备份。对于 CFURLRef 对象,使用相应的 kCRUFLIsExcludedFromBackupKey 属性。

现在我已经实现了 NSURLIsExcludedFromBackup 标志并将整个图书馆和文档目录设置为 true。我正在使用以下代码:

func addSkipBackupAttributeToItemAtURL(filePath:String) -> Bool
{
    let URL:NSURL = NSURL.fileURLWithPath(filePath)
    assert(NSFileManager.defaultManager().fileExistsAtPath(filePath), "File \(filePath) does not exist")
    var success: Bool
    do {
        try URL.setResourceValue(true, forKey:NSURLIsExcludedFromBackupKey)
        print("Done")
        success = true
    } catch let error as NSError {
        success = false
        print("Error excluding \(URL.lastPathComponent) from backup \(error)");
    }

    return success
}

并在 didFinishLaunchingWithOptions 中调用它,例如:

let dirPaths = NSSearchPathForDirectoriesInDomains(.LibraryDirectory,.UserDomainMask, true)
let finalURL = dirPaths[0]
addSkipBackupAttributeToItemAtURL(finalURL as String)

此外,我的应用程序不创建任何临时文件,也不使用文档目录。婴儿我的主要 ViewController 是静态的,但 Apple 应用程序审查团队说应用程序存储 7mb。

我还卸载了应用程序并清除了缓存并将其重新安装到模拟器和设备上并检查了 iCloud 存储。还有它说 "No Data"

能否请您帮我了解一下这个 7mb 的审查小组是从哪里收集的。

问题是 AppIcon 文件。由于 Apple 将它们存储在 iCloud 中,可能用于跨平台和在应用安装时显示。

转到资产 --> 右键单击​​ AppIcon --> 获取信息并查看大小。

解决方案:

尝试优化图标,您的问题将得到解决。

检查:

从 phone 卸载应用程序。 转到设置 -> iCloud -> 管理存储 -> select 你的 phone -> 记下下一个备份大小。

安装应用程序并再次查看大小,它不应增加,否则 Apple 将拒绝。

希望这会有所帮助。