2012-01-11 10 views
7

Stiamo memorizzando i dati nella directory del documento dell'applicazione e abbiamo ottenuto il rifiuto dell'applicazione. Abbiamo provato con l'attributo "non eseguire il backup" per l'archiviazione dei dati nella versione corrente con il seguente codice.Applicazione rifiutata a causa del mancato rispetto delle linee guida per la memorizzazione dei dati iOS

- (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; 

} 

Abbiamo usato come da Istruzioni per la conservazione dei dati iOS.

Nella versione precedente abbiamo anche provato con la memorizzazione dei dati nella directory privata. Ma non siamo stati in grado di ottenere l'approvazione della domanda.

Può per favore darci qualche altra descrizione sul perché non siamo in grado di ottenere l'approvazione della domanda? o ancora, abbiamo bisogno di altre modifiche al codice riguardanti l'archiviazione dei dati? Quindi, possiamo ottenere l'approvazione e abbiamo una nuova versione dell'applicazione su iTunes.

+7

Che cosa stai memorizzando esattamente e perché? Gli elementi memorizzati nella cache devono essere inseriti nella directory Caches, tutti i dati creati dall'utente devono essere archiviati in Documenti e altre cose devono trovarsi nel pacchetto Application o nella directory tmp. – Jasarien

+0

Grazie per i vostri commenti. Ho un file di database di grandi dimensioni e anche il salvataggio di file audio di parole. Ho prima provato a salvare nei documenti e poi ho provato con l'attributo "non eseguire il backup". Quindi, per favore, dimmi cosa devo fare per l'approvazione della domanda? –

risposta

6

Penso che il commento di @ Jasarien sia la risposta giusta, ma non ci sono state ulteriori comunicazioni, e questa domanda è relativamente nuova, quindi mi dilungherò.

Per far vedere agli altri il rifiuto che si ottiene:

Le Istruzioni per la conservazione dei dati iOS specificare:

  1. Solo documenti e altri dati che vengono generati dagli utenti, o che non possono altrimenti essere ricreati dalla tua applicazione, dovrebbe essere memorizzato nella directory/Documenti e verrà automaticamente eseguito il backup da iCloud.

  2. I dati che possono essere nuovamente scaricati o rigenerati devono essere memorizzati nella directory/Library/Caches. Esempi di file che dovresti inserire nella directory Caches includono i file di cache del database e il contenuto scaricabile, come quello utilizzato dalle applicazioni di riviste, giornali e mappe.

  3. I dati utilizzati solo temporaneamente devono essere memorizzati nella directory/tmp. Sebbene questi file non vengano salvati su iCloud, ricordati di cancellare quei file quando hai finito con loro in modo che non continuino a consumare spazio sul dispositivo dell'utente.

  4. Utilizzare l'attributo "non eseguire il backup" per specificare i file che devono rimanere sul dispositivo, anche in situazioni di scarsa memoria. Utilizza questo attributo con dati che possono essere ricreati ma che devono persistere anche in situazioni di scarsa memoria per il corretto funzionamento della tua app o perché i clienti si aspettano che sia disponibile durante l'utilizzo offline. Questo attributo funziona sui file contrassegnati indipendentemente dalla directory in cui si trovano, inclusa la directory Documenti. Questi file non verranno eliminati e non saranno inclusi nel backup iCloud o iTunes dell'utente. Poiché questi file faccio uso di spazio di archiviazione on-device, la vostra applicazione è responsabile del monitoraggio e spurgo periodicamente questi file."

Ad esempio, solo il contenuto che l'utente crea utilizzando la vostra applicazione, ad esempio, documenti, i nuovi file , modifiche, ecc., possono essere archiviati nella directory/Documenti e sottoposti a backup da iCloud.

I file temporanei utilizzati dall'app devono essere memorizzati solo nella directory/tmp; ricordarsi di eliminare i file memorizzati in questo posizione quando l'utente esce dall'app

Dati che possono essere ricreati ma che devono persistere per il corretto funzionamento della tua app - o perché i clienti si aspettano che sia disponibile per l'utilizzo offline: deve essere contrassegnato con l'attributo "non eseguire il backup".Per ulteriori informazioni, consultare il Technical Q & A 1719: Come impedire il backup dei file su iCloud e iTunes ?.

Così vedo il motivo per cui si dovrebbe usare "non eseguire il backup" e si aspettano di essere in regola, ma penso che come @Jasarien ha detto - Non significano per voi di passare a più directory discreti come cache o temperatura.

In effetti ciò che passerebbe sicuramente alla recensione è il passaggio a Core Data e l'utilizzo di SQLite interno, ma probabilmente è troppo lavoro.

Quindi per concludere - un post su come salvare le cache o TMP - Where to save files in iOS 5 applications? (in realtà, forse questo era tutto un duplicato di quello ...: - /)

GL! Oded

- Modifica -

Un altro buon posto: https://stackoverflow.com/questions/8164868/ios-data-storage-guidelines-available-since-when

- Modifica # 2 -

E un altro buon posto: iOS 5 does not allow to store downloaded data in Documents directory?

che dovrei Ho appena indicato i duplicati ... :)

0

Dai un'occhiata a questo link http://developer.apple.com/library/ios/#qa/qa1719/_index.html#//apple_ref/doc/uid/DTS40011342 Il codice che stai usando è compatibile con 5.0.1 e non 5.1 e successivi. Devi usare Cache per < = 5.0. Ma la soluzione migliore sarebbe quella di distribuire per 5.1 e versioni successive invece di 5.0, perché se si dispone di grandi quantità di dati, è probabile che la cache verrà cancellata prima possibile. Spero che sia d'aiuto.