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 - 在本机应用程序中缓存资产的主要内容,如果未能解决你的问题,请参考以下文章
Facebook iOS SDK 登录原生和 UIWebView 登录
Facebook iOS SDK 使用 UIWebView 而不是 safari 登录(本机技巧/解决方案)