WKWebView的local storage数据同步的问题

2021-09-14 14:50:08 浏览数 (1)

最近在开发过程中遇到这样一个问题:

webView1中加载了一个H5,webView2中加载了同样的一个H5,该H5是一个搜索页面,通过Local storage来持久化搜索记录,但是在webView1搜索的记录并没有及时同步到webView2中。

这个问题的关键就在于WKProcessPool。

WKProcessPool是用于配置进程池的,它与网页视图的资源共享有关。WKProcessPool这个类中没有暴露任何的属性和方法,如下图所示:

配置为同一个进程池的webView之间可以共享数据(例如cookie、localStorage等)。

每一个webView都会有自己的一个web内容进程,这些进程会被放进config配置的processPool中,处于同一个processPool中的web内容进程之间会共享。但是processPool中的进程会有限制,一旦达到该限制,processPool中的web内容进程之间将会停止共享。

所以我将WKProcessPool设置成了单例:

代码语言:javascript复制
class FXProcessPool: WKProcessPool {
  static let sharedPool = FXProcessPool()
  
  private override init() {
    super.init()
  }
  
  required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }
}

这样的话,我应用程序中的各个webView间的localStorage就会共享了。

以上

0 人点赞