iOS5.1中的After App更新后,基于PhoneGap的应用程序无法运行

时间:2012-04-30 14:45:51

标签: iphone ios ipad sqlite cordova

我有一个基于PhoneGap的iOS应用程序,它使用SQLite DB进行离线存储。 iOS 5.1中的应用更新后,该应用无法运行。相同的应用程序在5.1以下版本中运行良好。

我探索了一些事情,我的分析是

  1. 当我们安装应用程序时,iOS会为此创建一个单独的沙箱,并且与该应用程序相关的所有数据都会进入该状态。
  2. iOS5.1中的
  3. 在我们更新应用程序时,会创建新的沙箱,并将旧沙箱中的内容移到此处。
  4. 对于WebSQL,即iOS 5.1中针对PhoneGap的SQLite,数据库存储在缓存文件夹(易失性存储)下。但在以前版本的iOS中,SQLite数据库存储在Sandbox中的Documents文件夹下,这是持久存储。
  5. 真正的问题是在缓存/首选项中有一个名为“.preferences”的文件,其中包含websql DB的路径。当我做一个应用程序更新沙箱路径更改但在此文件中,前一个沙箱路径仍然可用,因为此应用程序无法正常工作,因为之前的路径已从设备中删除。
  6. 这是Apple的问题还是可以由开发人员解决?

2 个答案:

答案 0 :(得分:1)

我已经通过

解决了这个问题

iOS引用的用于查找WEB DB(SQLite)和本地存储的路径存储在NSUserDefaults中。 因此,当我每次检查路径信息并确保它匹配新的沙箱路径时启动应用程序,如果不是我设置该密钥的值,现在应用程序正常工作。

NSUserDefault引用SQLite路径的键是WebDatabaseDirectory。

如果Apple在下一版本中针对此问题发布了修补程序,则不需要此代码。

答案 1 :(得分:0)

尝试使用cordova-1.6.0或更高版本。

当我改为cordova-1.6.0时,我的问题已解决。