【问题标题】:PWA on IOS and offline storageIOS 上的 PWA 和离线存储
【发布时间】:2019-01-06 16:11:09
【问题描述】:

我们希望开发一款能够为评估人员记录受损汽车详细信息的“应用程序”。这个想法是少数评估员将拥有公司的 iPad。然后当汽车损坏并返回车场时,他们可以访问拍照,输入一些详细信息,然后将它们上传到主系统。一些车场可能位于没有互联网覆盖的区域,因此需要离线功能。

我们最初的想法是开发一个 IOS 应用程序以安装在少数公司的 iPad 上。该应用程序可以访问相机拍照,然后当设备可以访问互联网时将照片上传到主系统。然而,这种解决方案对客户来说可能过于昂贵(就开发成本而言)。

我已阅读有关 PWA 和缓存数据的信息,但缓存似乎是用于离线读取访问。

如果我们在 iPad 上安装了 chrome,然后又安装了 PWA,那么大概

  1. PWA 最多可以存储 128GB * 6% = 7.68GB 的​​图片吗?
  2. 如果使用文件系统 API 存储,那么(只要有足够的 系统上的空间)数据将被持久化(我的理解是没有时间限制)?或者其他类型的存储是否更合适。
  3. 离线数据显然很重要(可能需要在法庭上),那么在图像上传到主系统之前,还有其他关于持久性和稳定性的问题吗?

请注意,我们更喜欢使用 iPad(因为客户更喜欢这些),但我们可以考虑使用其他平台。

在这个阶段我真的想弄清楚访问离线存储的 PWA 在平台上是否可行、实用和稳定?

【问题讨论】:

  • 我无法使用 File System API,但我们正在使用 IndexedDB 并发现如果用户不定期打开应用程序,iOS 会认为数据不重要并将其删除。这似乎发生在几周到一个月不使用的情况下。我很想听听其他人的经历。

标签: ios progressive-web-apps


【解决方案1】:

首先,iOS 限制第三方网络浏览器(或任何显示网页的应用程序)使用自己的引擎 - 在 iPad 上安装 Chrome 将无法访问 iOS/Safari 尚不支持的任何网络 API。

特别是:

  • 文件系统 API 在 iOS 上不可用,即使您使用的是 Chrome
  • 缓存 API 对每个网站的存储限制为 50MB
  • IndexedDB 每个网站的存储限制为 500MB 或设备可用空间的一半(以较小者为准)
  • 如果几周未使用 PWA 及其缓存数据,则会自动从设备中擦除
  • iOS 不支持需要持久数据的“navigator.storage”API,即使您使用的是 Chrome 或 Firefox。

【讨论】:

  • 这些陈述中至少有一个是错误的:“如果几周不使用 PWA 及其缓存的数据会自动从设备中擦除”
  • 受多个来源支持,例如love2dev.com/blog/… - 也许 iOS 13 已更改,但答案是在 iOS 12 最新版本时编写的。
  • 抱歉 kh42874 - 我以为你指的是所有 PWA - 但我看到你特别指的是 IOS - 我还没有测试过。在我自己测试之前,我不相信其他人的说法。这两周可能是准确的,我会尽快测试。
【解决方案2】:

我的第一个想法是,如果您只支持 iPad 并且需要无限期的离线存储,那么您可能最好使用本机应用程序。请记住,对于此类应用程序,您需要Apple Enterprise Program,它比常规开发人员计划更昂贵。

但是,如果您确实想使用 PWA,则本地存储的最佳选择是 IndexedDB。根据 ADM webdocs 的说法,根据 skybondsor 的评论,浏览器确实会限制并可能在一段时间后驱逐数据。

但是阅读您的问题后,我感觉您并不真正需要持久的本地存储,而是一种确保您的数据最终会在服务器上结束的方法。您可以通过利用Background Sync methodology 来实现此目的。这允许您的应用程序将上传延迟到稳定的 Internet 连接可用时。

【讨论】:

    猜你喜欢
    • 2019-11-04
    • 2019-04-18
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多