2012-03-12 25 views
17

Estaba usando localstorage para guardar un valor en mi aplicación, que funciona con PhoneGap, pero cuando Apple lanzó el nuevo iOS 5.1, mi aplicación ahora no guarda el valor.Phonegap iOS 5.1 y localStorage

¿Alguien sabe cómo resolver este problema?

Muchas gracias !!!

Edit: poner el código que estaba usando:

window.localStorage.setItem("login", $('#login').val());

lo uso para guardar el valor, y lo uso para leer el valor:

function onDeviceReady() { 
    var login = window.localStorage.getItem("login"); 

    if (login != null) { 
     $('#login').val(login); 
    } 
} 

Pero cuando cierra la aplicación, los valores no se guardan.

+0

¿Tiene algún código? –

+0

Edito la publicación :) ¡Gracias! – chemitaxis

Respuesta

23

Hubo un gran hilo en el grupo de grupos de teléfonos que habló sobre este problema. Básicamente es porque ahora tratan localStorage como un elemento temporal que se puede eliminar en cualquier momento. ¡No temas que haya personas muy inteligentes en el trabajo!

aquí está el hilo - https://groups.google.com/forum/?fromgroups#!topic/phonegap/RJC2qA9sDnw

aquí está el código - http://pastebin.com/5881768B

+0

¿Esto todavía funciona en PhoneGap 3? –

+1

@ScottC sí. El parche se ha agregado a 3.0 por lo que ya no necesita hacer mucho más. –

8

En iOS 5, localStorage se hizo persistente por omisión, por parte de Apple. En iOS 5.1, el almacenamiento local se convirtió en una carpeta temporal que el SO podía eliminar cada vez que el almacenamiento estaba restringido. En iOS 6, el almacenamiento local se convirtió en una carpeta opcionalmente persistente con un indicador en la configuración.

Phonegap 2.0 se dirigió a iOS 5.1 y proporcionó un mecanismo de complemento para proporcionar persistencia a pesar de que iOS no lo hizo.

Con iOS 6 y Phonegap 2.1 se intentó utilizar el complemento solo si la versión de iOS es 5.1 y se recurre al mecanismo nativo de iOS para persistir en la carpeta.

Sin embargo, hay un error con esta solución, en iOS 6, donde la carpeta localstorage se elimina por primera vez, los datos están almacenados: https://issues.apache.org/jira/browse/CB-1535 El informe de errores también tiene el parche; sin embargo, aún no está programado para ser parte de ninguna versión de lanzamiento de PhoneGap; por lo que tendría que aplicar manualmente el parche.

+0

Entonces, ¿es aceptable su uso en la última versión de PhoneGap incluso si el usuario está en iOS 5.1? LocalStorage persistirá ahora con el parche? – jocull

Cuestiones relacionadas