2012-04-30 44 views
1

我有一個基於PhoneGap的iOS應用,它使用SQLite DB進行離線存儲。在iOS 5.1的應用更新後,該應用無法正常工作。同一個應用在5.1以下版本中工作正常。基於PhoneGap的應用在iOS5.1之後的應用更新後無法工作

我探討一些東西,我的分析是

  1. 當我們安裝一個應用的iOS創建一個單獨的沙箱和所有有關該應用程序的數據進去了這一點。
  2. 在iOS5.1中,當我們更新應用程序時,將創建新的沙箱,並將舊沙箱中的內容移至此處。
  3. 對於WebSQL,即用於iOS 5.1中的PhoneGap的SQLite,數據庫存儲在緩存文件夾(易失性存儲)下。但在以前的iOS版本中,SQLite數據庫存儲在Sandbox中的Documents文件夾下,該文件夾是永久存儲。
  4. 真正的問題是在緩存/首選項中有一個名爲「.preferences」的文件,該文件具有websql數據庫的路徑。當我做一個應用程序更新沙箱路徑更改,但在此文件中,以前的沙箱路徑仍然可用,由於此應用程序不工作,因爲之前的路徑已從設備中刪除。

這是Apple問題還是可以由開發人員解決?

+0

您是否建議SQLite在iOS 5.1中完全不起作用,或者它只是在與先前安裝的應用程序遷移操作系統的手機上打破? SQLite是否適用於iOS 5.1的全新安裝/新安裝? iOS 5.1中的 – Purpletoucan

+0

,應用更新應用無法連接到SQLite。我在這個問題上發現了一個來自PhoneGap的信息。他們明確表示這是蘋果的問題,而且已經提出了這個問題。 http://phonegap.com/2012/04/18/ios-5-1-and-the-embedded-uiwebview-with-cordova/ – Defendore

回答

1

我已經

解決了該問題通過iOS的簡稱查找Web DB(SQLite的)和本地存儲路徑存儲在NSUserDefaults的。 所以當我每次啓動應用程序時,我檢查路徑信息,並確保它匹配新的沙箱路徑,如果沒有我設置該鍵的值,現在應用程序工作正常。

NSUserDefault指向SQLite路徑的鍵是WebDatabaseDirectory。

如果Apple在其下一版本中發佈此問題的修復程序,則不需要此代碼。

+0

我不使用PhoneGap,但我不得不說這是一個很好的解決方法。 –

0

儘量使用cordova-1.6.0或以上版本。

當我更改爲cordova-1.6.0時,我的問題已修復。

相關問題