2011-10-14 13 views
11

Yo, como muchos desarrolladores, recibí un correo electrónico de Apple que decía que deberíamos mover nuestros datos desde el directorio de documentos a otra carpeta para permitir una copia de seguridad más optimizada a iCloud.iCloud + Almacenamiento de medios en la carpeta Documentos de iPhone

En pruebas recientes, parece que [su aplicación] almacena una buena cantidad de datos en su carpeta Documentos.

Dado que las copias de seguridad de iCloud se realizan todos los días a través de Wi-Fi para dispositivo iOS de cada usuario, que es importante para asegurar la mejor experiencia de usuario posible reduciendo al mínimo la cantidad de datos que se almacenan en su aplicación.

Marco Arment, de la fama instapaper, tiene una buena opinión sobre el tema, que es que la ubicación recomendada para almacenar archivos descargables se encuentra en/Library/Caches. Sin embargo, el problema es que tanto/tmp como/Cachés se pueden "limpiar" cada vez que el SO decida que el dispositivo se está quedando sin almacenamiento. Si su aplicación se limpia, los datos descargados por su aplicación y almacenados por su usuario se han ido. Naturalmente, el usuario te culpará a ti y no a Apple.

¿Qué hacer?

+0

¿Dice que debe o solo debería considerarlo? Si puede argumentar que el almacenamiento transitorio no es "la mejor experiencia de usuario posible", es posible que pueda decir legítimamente "lo consideramos pero no es una buena experiencia para el usuario". – ceejayoz

+3

Tengo la sensación de que debería convertirse en must muy pronto. Las copias de seguridad de iCloud van a ser un ancho de banda de uso masivo en Internet en los próximos meses, tal vez un porcentaje significativo. Y recuerde, el usuario solo obtiene 5 gigas de almacenamiento por defecto. Es por eso que Apple desea que las aplicaciones de los desarrolladores solo tengan datos vitales en Documentos. Solo desearía que nos dieran la opción de crear un directorio que no sea de iCloud que también esté protegido contra la "limpieza". –

Respuesta

15

iOS 5.0.1 introdujo una bandera para abordar esta cuestión:

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

Su recomendación es crear una carpeta en/Library/como/Library/PrivateDocs, y poner los archivos allí.Sin embargo, también tendrá que establecer un indicador de "no hacer copia de seguridad" en ellos, ya que todos los archivos en/Biblioteca, excepto los que están en/Library/Cache o tmp, están respaldados por defecto. Establezca el indicador en la carpeta PrivateDocs con este comando:

#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; 
} 
+0

Me alegré de ver esto en 5.0.1 y he seleccionado esto como la respuesta correcta. No estoy de acuerdo con las respuestas anteriores, que eran buenas en ese momento ... es solo que esta es la manera de hacerlo. –

+2

El código ahora está en desuso. La URL sigue siendo válida, y allí puede encontrar el código para iOS 5.1 y versiones posteriores. –

+0

donde se usa este método? – Purva

3

Library/Caches es probablemente una buena respuesta para muchas aplicaciones. Especialmente cuando la aplicación funcionará correctamente, los datos almacenados en caché se pierden y borrar el caché no destruye todo el registro de los datos que un usuario haya elegido almacenar en caché y de dónde puede volver a obtenerlos.

Para las aplicaciones que tienen datos que no pertenecen a Caches considere Library/Application Support.

http://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW1

Application Support:

Utilice este directorio para almacenar todos los archivos de datos de aplicación, excepto los relacionados con los documentos del usuario. Por ejemplo, puede usar este directorio para almacenar archivos de datos creados por la aplicación, archivos de configuración, plantillas u otros recursos fijos o modificables que administra la aplicación. Una aplicación puede usar este directorio para almacenar una copia modificable de los recursos contenidos inicialmente en el paquete de la aplicación. Un juego puede usar este directorio para almacenar nuevos niveles comprados por el usuario y descargados de un servidor.

Todo el contenido de este directorio debe colocarse en un subdirectorio personalizado cuyo nombre es el identificador del paquete de la aplicación o su empresa.

En iOS, el contenido de este directorio está respaldado por iTunes.


Desafortunadamente el directorio Application Support está siendo respaldada y cae bajo la manzana de nuevo data storage guidelines. Dependiendo de cuán sensibles sean los revisores sobre el tamaño total del archivo respaldado, esto puede generar rechazos.

Cuestiones relacionadas