iCloud +在iPhone Documents文件夹中存储媒体

Mic*_*son 11 iphone ios icloud

我和许多开发人员一样,最近收到了Apple发来的一封电子邮件,声称我们应该将文档目录中的数据移到另一个文件夹中,以便更加简化备份到iCloud.

在最近的测试中,似乎[您的应用]在其Documents文件夹中存储了大量数据.

由于每天通过Wi-Fi为每个用户的iOS设备执行iCloud备份,因此通过最小化应用程序存储的数据量来确保最佳用户体验非常重要.

instapaper成名的Marco Arment对这个问题有很好的理解,即存储可下载文件的推荐位置在/ Library/Caches中.但问题是,只要操作系统确定设备的存储空间不足,就可以"清除"/ tmp和/ Caches.如果您的应用已清除,则您的应用下载并由您的用户存储的数据将会消失.当然,用户会责怪你而不是苹果.

该怎么办?

Bad*_*ate 15

iOS 5.0.1引入了一个标志来解决此问题:

https://developer.apple.com/library/ios/#qa/qa1719/_index.html

他们建议在/ Library/like/Library/PrivateDocs中创建一个文件夹,然后将文件放在那里.但是,您还必须在它们上设置"不备份"标志,因为/ Library中的每个文件除了/ Library/Cache或tmp中的文件都默认备份.使用以下命令在PrivateDocs文件夹上设置标志:

#include <sys/xattr.h>
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    const char* filePath = [[URL path] fileSystemRepresentation];

    const char* attrName = "com.apple.MobileBackup";
    u_int8_t attrValue = 1;

    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
    return result == 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 该代码现已弃用.该URL仍然有效,您可以在那里找到iOS 5.1及更新版本的代码. (2认同)