ers*_*kin 20 objective-c app-store appstore-approval ios
这是苹果关于拒绝的消息:
2.23 - 应用必须遵循iOS数据存储指南,否则将被拒绝2.23详细信息
在启动和内容下载时,您的应用程序存储6.5 MB,这不符合iOS数据存储指南.
下一步
请确认iCloud仅根据iOS数据存储指南的要求备份用户使用您的应用创建的内容,例如文档,新文件,编辑等.另外,检查应用程序使用的任何临时文件是否只存储在/ tmp目录中; 请记住在确定不再需要时,删除或删除存储在此位置的文件.
可以重新创建但必须保持应用程序正常运行的数据 - 或者因为用户希望它可供脱机使用 - 应标记为"不备份"属性.对于NSURL对象,请添加NSURLIsExcludedFromBackupKey属性以防止备份相应的文件.对于CFURLRef对象,请使用相应的kCRUFLIsExcludedFromBackupKey属性.
我检查了我的应用程序的数据文件,包括设备和模拟器.我发现,如果应用程序已经使用了一段时间,它的总应用程序数据可以在启动时存储5-6 MB.但我卸载并重新安装了应用程序并再次检查,我看到应用程序启动时~3MB数据存储.
我没有存储任何Core Data数据库或任何其他数据库文件.但我意识到Google Analytics和Google跟踪代码管理器会在此路径中存储一些sqlite数据:"AppData/Library".我的意思是它不存储在这条路径上:"AppData/Library/Caches".这对iOS数据存储指南有什么影响吗?
顺便说一下,iCloud被禁用了应用程序.
此外,我正在使用SDWebImage下载图像,它在启动时存储了近3 MB的图像,并将图像数据存储在此路径上:"AppData/Library/Caches"
你知道我该怎么办才能解决这个问题吗?
Gla*_*ves 25
我昨天得到了同样的拒绝消息.
我使用以下代码application:didFinishLaunchingWithOptions:查看我的应用程序在documents文件夹中的内容以及每个项目关于iCloud备份的权限:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
NSArray *documents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:basePath error:nil];
NSURL *URL;
NSString *completeFilePath;
for (NSString *file in documents) {
completeFilePath = [NSString stringWithFormat:@"%@/%@", basePath, file];
URL = [NSURL fileURLWithPath:completeFilePath];
NSLog(@"File %@ is excluded from backup %@", file, [URL resourceValuesForKeys:[NSArray arrayWithObject:NSURLIsExcludedFromBackupKey] error:nil]);
}
Run Code Online (Sandbox Code Playgroud)
我在该文件夹中有一些与iCloud同步的文件.因此,我没有将这些文件保存在另一个地方,而是将NSURLIsExcludedFromBackupKey密钥集的资源值设置YES为排除这些文件被iCloud备份,如下所示:
NSURL *URL = [NSURL fileURLWithPath:photoPath];
[URL setResourceValue:@(YES) forKey:NSURLIsExcludedFromBackupKey error:nil];
Run Code Online (Sandbox Code Playgroud)
我今天再次发送我的应用程序以查看是否有效.
希望这有帮助.
最近,我们被Apple Review Team拒绝了同样的问题,
在启动和内容下载时,您的应用程序会在用户的iCloud上存储9.65MB,这不符合iOS数据存储指南.
他们建议遵循上述问题中提到的相同的后续步骤.
在我们的例子中,我们已经NSURLIsExcludedFromBackupKey在下载内容时在代码中设置了它.我们通知审核小组我们已经这样做了,因此他们将我们重定向到Apple开发人员技术支持(DTS)以更好地解决问题.
DTS回复说,导致问题的是我们的AppIcon文件.
AppIcons正在iCloud中备份,因为Apple要求在下载应用程序时在设备上显示图标.事实证明,我们的应用程序的AppIcons文件非常大,导致拒绝,因为它正在向iCloud备份大量数据.App Review团队没有向我们明确传达这一点,因为他们中的一些人并未意识到跟踪AppIcons的这一新工具更改.
现在我们知道了原因,我们使用ImageOptim优化了我们的图标,并将大小最小化为 75KB.
我们提交了我们的应用程序,希望它将在1至2天内获得批准.:)
我希望这可以帮助那些有同样问题的人.:)
小智 5
最近进入同一个问题,刚刚翻译了Glauco对Swift的回答(尽管它可能写得更快)
let directories = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true)
if let documentDirectory = directories.first {
do {
let documents = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(documentDirectory)
for files in documents {
let urlForm = NSURL.fileURLWithPath(documentDirectory + "/" + files)
do {
try print("\(files): \(urlForm.resourceValuesForKeys([NSURLIsExcludedFromBackupKey]))")
} catch {
print("can't find key")
}
}
} catch {
print("can't retrieve contents")
}
}
Run Code Online (Sandbox Code Playgroud)
代码为setResourceValue
let urlToExclude = NSURL.fileURLWithPath(quoteSavePath!)
do {
try urlToExclude.setResourceValue(NSNumber(bool: true), forKey: NSURLIsExcludedFromBackupKey)
} catch { print("failed to set resource value") }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6851 次 |
| 最近记录: |