2012-03-12 114 views
17

我使用localstorage在我的應用程序中保存了一個值,該值適用於PhoneGap,但是當Apple發佈新的iOS 5.1時,我的應用程序現在不保存該值。Phonegap iOS 5.1和localStorage

有誰知道如何解決這個問題?

非常感謝!

編輯:我把我正在使用的代碼:

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

我用它來保存的價值,我用它來讀取值:

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

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

但是,當我關閉應用程序,值不會被保存。

+0

你有任何的代碼? – 2012-03-12 09:24:20

+0

我編輯帖子:)謝謝! – chemitaxis 2012-03-13 10:24:30

回答

23

phonegap組中有一個大線程討論了這個問題。基本上它是因爲他們現在把localStorage當作一個可以在任何時候刪除的臨時項目。不要害怕工作中有非常聰明的人!

這裏的話題 - https://groups.google.com/forum/?fromgroups#!topic/phonegap/RJC2qA9sDnw

這裏的代碼 - http://pastebin.com/5881768B

+0

這在PhoneGap 3中仍然有效嗎? – 2013-08-23 03:49:13

+1

@ScottC是的。該補丁已被添加到3.0,所以你不再需要做太多。 – 2013-08-23 14:09:12

8

在iOS 5中,localStorage的被做默認持久的,由蘋果。 在iOS 5.1中,local storage是一個臨時文件夾,任何時候存儲受到限制都可以被操作系統刪除。 在iOS 6中,localstorage是設置中帶有標誌的可選持久文件夾。

Phonegap 2.0針對iOS 5.1,並提供了插件機制來提供持久性,即使iOS沒有。

對於iOS 6和phonegap 2.1,僅當iOS版本爲5.1並且回退到iOS本地機制以保留文件夾時,纔會嘗試使用該插件。

但是,在iOS 6上存在一個錯誤,在第一次刪除localstorage文件夾時,會存儲數據:https://issues.apache.org/jira/browse/CB-1535 錯誤報告也有補丁程序;但是它尚未計劃成爲任何PhoneGap發佈版本的一部分;所以你將不得不手動應用補丁。

+0

即使用戶使用的是iOS 5.1,也可以在最新版本的PhoneGap中使用它嗎? LocalStorage現在還會繼續使用該補丁嗎? – jocull 2013-07-15 15:06:23