首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IOS:不备份属性吗?

IOS:不备份属性吗?
EN

Stack Overflow用户
提问于 2018-02-01 06:07:59
回答 2查看 0关注 0票数 0

我们的应用程序最近因违反iOS Data Storage Guidelines关于备份 iCloud 上的文件。

我必须用do not back up属性。

我将所有重要数据存储在 SQLite 数据库中,用户首选项存储在 UserDefaults.plist 中。我是否必须将数据库标记为do no back up?

我问审查员我是否要禁用iCloud。

下面是评审员的回答:

您的应用程序不遵循 iOS 数据存储指南,这是 AppStore 评论指南所要求的。

特别是,我们发现在启动和/或内容下载时,应用程序存储了 4MB。要检查应用程序存储了多少数据:

  • 安装并启动应用程序
  • 转到 Settings>iCloud>Storage&Backup>ManageStorage
  • 如有必要,点击“显示所有应用程序”
  • 检查应用程序的存储空间

IOS 数据存储指南指出,只有用户使用应用程序创建的内容,例如文档、新文件、编辑等,才应该由 iCloud 备份。

应用程序使用的临时文件只应存储在 /tmp 目录中;当用户退出应用程序时,请记住删除存储在此位置的文件。

数据可以重新创建,但必须持久,以便您的应用程序正常运行-或者因为客户期望它可以脱机使用-应该标记为“不备份”属性。对于 NSURL 对象,添加 NSURLIsExcludedFromBackupKey 属性以防止备份相应的文件。对于 CFURLRef 对象,使用相应的kCFURLIsExcludedFromBackupKey属性。

有关更多信息,请参见技术问答1719:如何防止文件被备份到iCloud和iTunes?

有必要修改应用程序以满足IOS数据存储指南的要求。对于离散代码级别的问题,您可能希望咨询苹果开发人员的技术支持。请务必:

  • 包括你的拒绝问题的全部细节。
  • 准备任何象征性的崩溃日志,屏幕截图和步骤,以便在DTS工程师跟进时重现问题。
EN

Stack Overflow用户

发布于 2018-02-01 14:18:44

基本上,这取决于您存储的数据类型。

如果数据可以重新生成(例如,当用户在另一个设备上安装应用程序时),则不应该对其进行备份。

否则,iCloud备份是可以的,因为用户会期望他的数据是可用的,甚至在另一个设备上也是如此。

在第一个场景中,你基本上有两种方法来实现这一点...

要么你用NSURL设置kCFURLIsExcludedFromBackupKey在您的文件中,要么将它们存储在不会备份的位置,比如<Application_Home>/Library/Caches注意,第二个解决方案更好,IMHO。

想了解情况,kCFURLIsExcludedFromBackupKey可以这样使用:

NSURL * fileURL;

fileURL = [ NSURL fileURLWithPath: @"some/file/path" ];

[ fileURL setResourceValue: [ NSNumber numberWithBool: YES ] forKey: NSURLIsExcludedFromBackupKey error: nil ];

对于第二种情况,有时苹果的评论员认为你的数据可以重新生成。然后你必须解释为什么数据必须被备份。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档