2012-03-12 10 views
5

Sto creando un'app in stile quiz per iOS che utilizza phonegap. L'app consente agli utenti di creare quindi di prendere i quiz.Come impedire l'eliminazione del database HTML 5 quando si utilizza PhoneGap e iOS 5.1

Attualmente sto utilizzando un database HTML 5 utilizzando le API phonegap per archiviare i dati dei test e dei risultati. Sono preoccupato però che il database possa ora essere cancellato da iOS 5.1 quando la memoria del dispositivo si riempie.

C'è comunque qualche indicazione sulla cartella della cache del webkit in cui è archiviato il database in modo che non venga mai cancellato? Se questo non è possibile ci sono suggerimenti per un altro modo per archiviare dati che saranno sempre persistenti.

risposta

1

C'è una correzione per entrambi i problemi con lo stoccaggio Webkit e iOS 5,1

  1. bagagli spostati da/Webkit a/Cache
  2. bagagli non è regolato alla struttura cartella aggiornata su un aggiornamento App sotto iOS 5.1 (WebKit Bug)

https://issues.apache.org/jira/browse/CB-330

Questa soluzione sembra essere più sicura della semplice modifica della posizione dei dati Webkit che chiamano un'API privata. Mentre l'app è in esecuzione, vengono utilizzate le posizioni di archiviazione di Webkit. Alla ripresa o alla chiusura di tutti i dati viene eseguito il backup nella cartella documenti. I timestamp assicurano che il vecchio backup non possa sovrascrivere i nuovi dati di archiviazione (se l'app si arresta in modo anomalo ...).

Il meglio: gli utenti che utilizzano una versione iOS precedente utilizzando un'app con quella correzione non subiranno danni persi in caso di aggiornamenti iOS. Ecco perché non si dovrebbe aspettare ...

+0

Grazie per questo. Sono stati migrati a questa soluzione con PhoneGap 1.6 – nicktones

+0

PhoneGap 1.6 ha questa correzione? –

-1

Invece di utilizzare un database html5, vorrei inviare/ricevere i dati tramite ajax (su un server remoto, con php e mysql), preferibilmente crittografato (e codificato in base64_).

+0

Ciao, grazie, ma ho bisogno che l'app sia in grado di funzionare completamente offline. – nicktones

7

Sì, è un peccato che Apple ha fatto in iOS5.1

E 'possibile modificare la posizione dei dati WebKit chiamare un privato API. Dovresti essere in grado di impostare la posizione in una cartella protetta come Documenti. Non avevo ancora testare questa soluzione, ma un'occhiata a questo post: How do I enable Local Storage in my WebKit-based application?

squadra PhoneGap sta lavorando anche su questo problema: https://issues.apache.org/jira/browse/CB-330

antoher modo è quello di utilizzare SQLite (lo stesso WebSQL) con un plugin PhoneGap. Quel plugin salva il database nella cartella Document, ciò significa che il DB non viene cancellato e salvato da iCloud.

Ecco il Native plug SQLite PhoneGap: https://github.com/davibe/Phonegap-SQLitePlugin Per quanto riguarda questo plugin, è un po ', ma più lento di WebSQL in alcuni casi, e ci sono alcune differenze tra l'API WebSQL, ma qui è un adattatore: https://gist.github.com/2009518

È inoltre necessario migrare il vecchio file db WebSQL (memorizzato nella directory Libreria/WebKit o Caches) nella cartella Documento. Ecco un codice per farlo: https://gist.github.com/2009491

E se i dati sono importanti, è necessario salvarlo su un server. Ho scritto un piccolo lib per sincronizzare SQLite DB a un server: https://github.com/orbitaloop/WebSqlSync

+0

Grazie mille per una risposta così completa! L'utilizzo di SQLite nativo risolverà il mio problema senza dover apportare modifiche importanti al codice. – nicktones

+0

Sto imparando ad implementarlo ora e sto avendo qualche problema nell'usare l'adattatore. Ho la configurazione dell'app per utilizzare il database HTML5, puoi indicarmi le modifiche che dovrei apportare e/o come utilizzare l'adattatore. – nicktones

+0

@nicktones: invece di chiamare tx.executeSql, è possibile chiamare la funzione definita nell'adattatore. Ma devo avvertirvi che il plugin SQLite ha alcuni bug, ed è più lento di WebSQL. E il team di phonegap ha trovato soluzioni per evitare questo problema: https://issues.apache.org/jira/browse/CB-330 – Samuel

Problemi correlati