2.23:应用程序必须遵循 iOS 数据存储指南,否则将被拒绝 [关闭]

2023-11-27

通过将应用程序上传到应用程序商店给了我这个错误。

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

我一直在观察问题是我正在使用的文件之一不满足存储要求。

更具体地说,它是一个 sqlite,用于使用route-me库加载离线地图模式。

我正在使用 sqlite 在离线模式下加载地图,该地图似乎作为备份存储在 iCloud 中,因此我跳过了存储限制。

不知道怎么说这个副本不是在 iCloud 中创建的。

代码如下:

[[RMDBMapSource alloc] initWithPath: @ "map.sqlite"]; 

文件大小为23MB

有任何想法吗?


您很可能将“map.sqlite”存储在应用程序的文档目录中。 Sqlite 文件通常会复制到 Documents 目录,以便它们可写。但iOS默认情况下会尝试将Documents目录中的所有文件复制或备份到iCloud(如果iCloud备份已打开)。因此,根据 Apple 的指南,您可以执行以下操作,以便 iCloud 不会从 Documents 目录备份您的数据库文件。

您可以调用以下函数将“map.sqlite”的路径作为 NSURL 传递:

NSURL *url = [NSURL fileURLWithPath:yourSQLitePath];
[self addSkipBackupAttributeToItemAtURL:url];

该函数提供于Apple as:

- (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;
}

此函数可确保 iCloud 不备份文件(以 URL 形式提供)。

您还可以将数据库文件放在 Documents 目录中的单独目录中,并通过调用此函数将该整个子目录标记为“不备份”。希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.23:应用程序必须遵循 iOS 数据存储指南,否则将被拒绝 [关闭] 的相关文章

随机推荐