2011-11-14 13 views
22

Desidero impostare Do not back up nella mia cartella che si trova in Document Directory.iOS 5.0.1: come verificare che la cartella sia contrassegnata come "Non eseguire il backup" per iCloud?

Ho trovato il codice per "Do not back up", ma come si verifica che la cartella sia contrassegnata.

+0

Hai funzionato? Sto anche provando qualcosa di simile per la directory in Documenti. Dobbiamo farlo per tutti i file sotto la directory? – applefreak

+0

@ AppleDeveloper: Sì, devi contrassegnare la tua directory se non vuoi eseguire il backup su iCloud. Ho provato questo. ma in attesa di recensioni di Apple. – Devang

+0

Freddo. Anch'io sto aspettando la recensione di Apple. Ho dato il mio codice a http://stackoverflow.com/questions/8209755/iphone-move-resources-to-application-bundle. Per favore fatemi sapere se vedete qualche problema. Grazie. – applefreak

risposta

12

In base ai documenti collegati, se si imposta il metodo esattamente su come sono elencati in quella pagina, il metodo restituirà YES se l'attributo è contrassegnato correttamente.

+0

ok. Ma dal documento ho trovato Importante: il nuovo attributo "non eseguire il backup" verrà utilizzato solo da iOS 5.0.1 o versioni successive. Su iOS 5.0 e versioni precedenti, le applicazioni dovranno memorizzare i loro dati in /Library/Caches per evitare di averne eseguito il backup.Poiché questo attributo viene ignorato su sistemi meno recenti, dovrai assicurarti che la tua app sia conforme alle Linee guida per lo storage dei dati iOS su tutte le versioni di iOS supportate dall'applicazione. Quindi Devo cambiare la posizione della mia cartella in libreria per l'approvazione di Apple. – Devang

+3

La tua app può controllare la versione del sistema operativo e fare la cosa appropriata. – hotpaw2

+0

Per favore correggimi se sbaglio. Sembra che ci siano tre casi: Pre 5.0, 5.0 e 5.0.1. Per 5.0.1, è possibile contrassegnare la cartella come "Dati offline". In 5.0, iCloud esiste, ma senza una soluzione "non eseguire il backup", quindi dovrai mettere i dati in Libreria/Cache, dove verrà eliminato :(. Pre 5.0 non ha iCloud e i dati AFAIK non saranno essere eliminati da Documenti o Cache, quindi è probabilmente sicuro inserire anche i dati nella cache. – Michael

10

eseguire l'applicazione nel simulatore, quindi utilizzare il terminale per eseguire questo comando contro i file rilevanti:

xattr -plxv com.apple.MobileBackup <file name> 
+0

Grazie , qual è il ? è la mia applicazione sul nome? o cosa ? –

+0

xattr non restituisce sempre nulla per i file da iOS Simulator. Significa che non esistono "attributi estesi"? – gmlvsv

21

Per iOS 5.1, eseguire l'applicazione nel simulatore, ed eseguire il seguente comando nel Terminale :

xattr {filename} 

si dovrebbe vedere la seguente se l'articolo è correttamente contrassegnato per l'esclusione:

com.apple.metadata:com_apple_backup_excludeItem 
+1

Questa è la risposta giusta che verifica effettivamente – Dev

+1

se si applica la proprietà "Non eseguire il backup" in una directory, i file su di esso non verranno sincronizzati? Perché l'ho applicato a una cartella (../Library/Folder/file) e quando uso "xattr ../Library/Folder" compare "com.apple.metadata: com_apple_backup_excludeItem", ma quando uso "xattr. ./Library/Folder/file "non lo fa. – tomidelucca

11
  1. aperta simulatore
  2. eliminare l'applicazione (il gruppo di verifica app funziona il tempo di codice da 1 a, in modo da assicurarsi che si sta iniziando da zero)
  3. ora eseguire il codice nel simulatore, il codice sarà memorizzare i file sul vostro disco rigido.
  4. aprono terminali
  5. cd/Users/(nome utente)/Libreria/Application Support/iPhone Simulator/(versione iOS)/Applicazioni
  6. ls
  7. ti verrà presentato con una lista di nomi di cartelle casuali , apri ognuno finché non trovi la cartella dell'app
  8. per il file $ (trovare *); fai du -sk $ file; xattr -l $ file; eco ; fatto
  9. vi verrà presentato con tutti i file in app nel formato ..

    (dimensione del file) (nome del file)
    (iCloud esclusione di backup)

NOTA: se non è elencato , significa che il file verrà sottoposto a backup (se presente nella cartella Libreria o Documenti) .. se invece vedi "com.apple.metadata: com_apple_backup_excludeItem: com.apple.MobileBackup" allora sei pronto.

+0

quando faccio questo, vedo "com.apple.MobileBackup:" invece di "com.apple.metadata: com_apple_backup_excludeItem: com.apple.MobileBackup". Questo significa che la bandiera non è stata impostata correttamente? Sto solo usando il metodo fornito qui per impostare il flag: https://developer.apple.com/library/ios/#qa/qa1719/_index.html – jonydep

+0

xattr non restituisce sempre nulla per i file da iOS Simulator. significa che non ci sono "attributi estesi"? – gmlvsv

2

Per iOS 5.1 o versione successiva questo codice funziona correttamente.

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString { 
     NSURL *fileURL = 
     [NSURL fileURLWithPath:filePathString]; 

     assert([[NSFileManager defaultManager] 
     fileExistsAtPath: [fileURL path]]); 

     NSError *error = nil; 

     BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool:YES] 
             forKey:NSURLIsExcludedFromBackupKey 
            error:&error]; 
     return success; 
    } 
+0

dove dovrebbe usare questo codice? !!!! in appDelegate.m? o cosa ? –

+1

@ Mc.Lover puoi scrivere questo codice ovunque nell'app. –

+0

Programmatore proattivo Ho messo su AppDelegate ma Apple ha respinto di nuovo !!! è strano caricare il file con [NSbundle mainBundle]; Non immagazzino nulla! per favore, aiutami a farcela? –

Problemi correlati