2016-01-24 2 views
2

Un de mes applications vient de se rejetaient pour la raison suivante:données inattendues enregistrées dans iCloud

2,23 - Applications doivent suivre les directives de stockage de données iOS ou ils seront rejetés

2,23 Détails

Lors du lancement et du téléchargement de contenu, votre application stocke 103,72 Mo sur l'iCloud de l'utilisateur, ce qui n'est pas conforme aux consignes de stockage de données iOS.

Je vérifie mon iPhone et mon application a permis d'économiser plus de 200 Mo de données sur iCloud. Cependant, je suis à peu près sûr que toutes les données de mon application sont enregistrées avec des données de base, et l'application n'a même pas iCloud activé dans l'onglet Capacités. Alors, y a-t-il un moyen de savoir d'où proviennent ces données? Ou pouvez-vous suggérer quelque chose qui pourrait causer cela afin que je puisse les examiner?

Modifier

Désolé j'ai raté une ligne dans les commentaires d'Apple:

Pour plus d'informations sur la prévention des fichiers d'être sauvegardés sur iCloud et iTunes, voir Technical Q&A 1719: How do I prevent files from being backed up to iCloud and iTunes.

Je pense donc que l'examinateur signifiait réellement est que certaines données qui ne devraient pas être sauvegardés à iCloud sont sauvegardés, donc tout ce que je dois faire est quelque chose comme ceci:

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *) filePathString { 
    NSURL* URL= [NSURL fileURLWithPath: filePathString]; 
    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); 

    NSError *error = nil; 
    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] 
           forKey: NSURLIsExcludedFromBackupKey error: &error]; 
    if(!success){ 
     NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); 
    } 
    return success; 
} 

Répondre

0

C'est un problème assez commun.

Vous pouvez utiliser le code suivant dans application:didFinishLaunchingWithOptions: pour voir l'autorisation de chaque élément sur la sauvegarde 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]); 
} 

Si vous remarquez que certains fichiers sont la synchronisation avec iCloud, au lieu d'enregistrer les fichiers dans un autre endroit vous pouvez définir la valeur des ressources pour la NSURLIsExcludedFromBackupKey-YES d'exclure ces fichiers d'être sauvegardés par iCloud

Comme ceci:

NSURL *URL = [NSURL fileURLWithPath:photoPath]; 
[URL setResourceValue:@(YES) forKey:NSURLIsExcludedFromBackupKey error:nil]; 
+0

Merci pour la réponse. Je viens de trouver que j'ai raté une ligne dans les commentaires d'Apple (j'ai édité la question). Désolé pour ça. –

+0

mon cas est que je ne pouvais pas trouver de fichier dans les documents, et la taille de sauvegarde est de quelques ko. – Bastet