2012-06-05 11 views
16

En mi aplicación tengo que almacenar la Base de Datos Core y los archivos de audio, así que decodifiqué para ponerlos en el directorio de Documentos. para evitar que la copia de seguridad, lo primero, cuando inicie la aplicación, pongo el hace la bandera que no respaldo, comoNo hacer una copia de seguridad en iCloud pero aún así rechazado

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
[self addSkipBackupAttributeToItemAtURL:[self applicationDocumentsDirectory]]; 
} 
    - (NSURL *)applicationDocumentsDirectory 
{ 
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
} 
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL 
{ 
    if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1 
    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; 
    } else { // iOS >= 5.1 
    return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil]; 
    } 
} 

pero parece que no funciona - que todavía son rechazados:

Hemos encontrado que su aplicación no sigue las Pautas de almacenamiento de datos de iOS, que se requiere según las Directrices de revisión de la tienda de aplicaciones.

En particular, encontramos que en el lanzamiento y/o descarga de contenido, su aplicación almacena 3.6 MB. Para comprobar la cantidad de datos que su aplicación está almacenando:

  • instalar y poner en marcha su aplicación
  • Ir a Ajustes> iCloud> Almacenamiento & de copia de seguridad> Administrar almacenamiento
  • Si es necesario, pulse "Mostrar todas las aplicaciones"
  • Registro de almacenamiento de su aplicación

Y el otro problema es que no puedo comprobar que - no veo mi aplicación en

Ajustes> iCloud> Almacenamiento & de copia de seguridad> Administrar almacenamiento

Tal vez el problema es solamente con 5,0 que tipo de no pienso en esta lista?

+10

¿Por qué la 'cerca' voto? Esta pregunta definitivamente no está fuera de tema. –

+1

Creo que este enlace http://www.icapps.be/prevent-app-rejection-caused-by-icloud-storage/ va a ser útil para ustedes. –

Respuesta

9

El problema es con iOS 5.0, en este iOS no debe poner la bandera de no hacer copia de seguridad La bandera de no hacer copia de seguridad se introdujo en ios 5.0.1 Tuvimos un problema similar con nuestra aplicación, se ha rechazado varios tiempos así que tuvimos que hacer un trabajo en torno a manejar diferentes IOSes necesitábamos para apoyar iOS < 5.0, iOS 5.0 y iOS> 5.0

Así que después de ponerse en contacto con apple, no hemos encontrado ninguna solución, salvo que tengan diferentes caminos en diferentes iOSes

Tuvimos una función como esta:

+ (NSString*) savePath 
{ 
    NSString *os5 = @"5.0"; 

    NSString *currSysVer = [[UIDevice currentDevice] systemVersion]; 
    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 

    if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedAscending) //lower than 4 
    { 
     return path; 
    } 
    else if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedDescending) //5.0.1 and above 
    {   
     return path; 
    } 
    else // IOS 5 
    { 
     path = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"]; 
     return path; 
    } 

    return nil; 
} 

Utilizamos y seguimos usando esta función.

Lea más

iOS 5.0

No es posible excluir los datos de las copias de seguridad en iOS 5.0. Si su aplicación debe ser compatible con iOS 5.0, deberá almacenar los datos de su aplicación en los cachés para evitar la copia de seguridad de los datos. iOS eliminará sus archivos del directorio Caches cuando sea necesario, por lo que su aplicación necesitará degradarse correctamente si se eliminan sus archivos de datos.

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

+0

Gracias por una excelente respuesta, pero creo que simplemente cambiaré el destino de implementación a 5.0.1, eso funcionará, ¿no? –

+1

Sí, en mi caso, no podría hacerlo ya que necesitaba compatibilidad con todas las versiones de iOS, tendrás que poner iTunes conecte la versión mínima de iOS a 5.0.1 –

+0

No entiendo cómo esto cumple con Reglas de iCloud de Apple. Esto devuelve la ruta a la carpeta de documentos para ambas versiones <5.0.1 y versiones> 5.0.1. ¿También establece un 'NSURLIsExcludedFromBackupKey' para la versión> 5.0.1? – Suz

Cuestiones relacionadas