iOS UIWebView - 在本机应用程序中缓存资产

Posted

技术标签:

【中文标题】iOS UIWebView - 在本机应用程序中缓存资产【英文标题】:iOS UIWebView - caching assets in native apap 【发布时间】:2019-01-15 18:23:56 【问题描述】:

我正在评估一个项目,该项目最初的目标是使用 React 和 Redux 的 PWA。

但该应用程序需要离线支持,并且需要大量的媒体资产(图像和视频)才能离线使用。

由于 service worker 的存储限制只有 50MB,这对于 ios 来说是不可行的。

我曾想过使用原生应用程序包装器来处理媒体文件的存储,而大多数应用程序仍然是 Redux/React 实现。

有没有一种好方法可以将这些资产从本机应用程序暴露给 UIWebView?或者对于这种情况还有其他常见的方法吗?

【问题讨论】:

【参考方案1】:

首先,您应该尝试仅缓存 PWA 所需的资产。但是,如果您想存储大文件,我建议您可以使用 IndexDB API。

IndexedDB 是一种低级 API,用于在客户端存储大量结构化数据,包括文件/blob。此 API 使用索引来启用对这些数据的高性能搜索。虽然 Web 存储对于存储少量数据很有用,但它对于存储大量结构化数据的用处不大。 IndexedDB 提供了一个解决方案。

为什么选择 IndexDB?

当 IndexedDB API 上的配额超过时,错误会调用事务的 onabort() 函数,并将 Event 作为参数。

当浏览器向用户请求扩展存储大小的权限时,所有浏览器只有在用户不允许时才调用该函数,否则继续事务。

如果您想了解其他可能的数据库,我建议您通过此链接 https://www.html5rocks.com/en/tutorials/offline/quota-research/

【讨论】:

以上是关于iOS UIWebView - 在本机应用程序中缓存资产的主要内容,如果未能解决你的问题,请参考以下文章

iOS UIWebView - 在本机应用程序中缓存资产

Facebook iOS SDK 登录原生和 UIWebView 登录

Facebook iOS SDK 使用 UIWebView 而不是 safari 登录(本机技巧/解决方案)

iOS 中 UIWebview 的 NSURLCache

从 uiwebview (iOs) 打印本地 html 文件

iOS应用程序因苹果应用商店而被拒绝,因为UIWebview