【问题标题】:PhoneGap based App does not work after After App update in iOS5.1iOS5.1 更新后基于PhoneGap 的应用程序无法正常工作
【发布时间】:2012-05-10 06:22:12
【问题描述】:

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

我探索了一些东西,我的分析是

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

这是 Apple 的问题还是可以由开发人员解决?

【问题讨论】:

  • 您是在暗示 SQLite 在 iOS 5.1 中根本不起作用,或者它只是在迁移操作系统并安装了应用程序的手机上中断? SQLite 是否适用于 iOS 5.1 上的全新构建/新安装?
  • 在 iOS 5.1 中,应用更新后应用无法连接到 SQLite。我从PhoneGap 找到了关于这个问题的一条信息。他们明确指出这是一个苹果问题,并且已经提出了一个错误。 phonegap.com/2012/04/18/…

标签: iphone ios ipad sqlite cordova


【解决方案1】:

我已经解决了这个问题

iOS 用来查找 WEB DB(SQLite) 和本地存储的路径存储在 NSUserDefaults 中。 因此,当我每次启动应用程序时,我都会检查路径信息并确保它与新的沙箱路径匹配,否则我会为该键设置值,现在应用程序可以正常工作了。

NSUserDefault Key 引用的 SQLite 路径是 WebDatabaseDirectory。

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

【讨论】:

  • 我不使用 PhoneGap 但我不得不说这是一个很好的解决方法。
【解决方案2】:

尝试使用cordova-1.6.0或以上版本。

当我更改为 cordova-1.6.0 时,我的问题就解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2022-11-11
    • 2018-09-06
    • 2022-10-09
    相关资源
    最近更新 更多