我正在使用 2 个 ViewControllers 和 2 个 WKWebViews。
WebViews 使用共享的 WKWebViewConfiguration。扩展 WKWebViewConfiguration {
static var Shared : WKWebViewConfiguration{
if sharedConfiguration == nil{
sharedConfiguration = WKWebViewConfiguration()
sharedConfiguration.websiteDataStore = WKWebsiteDataStore.default()
sharedConfiguration.processPool = WKProcessPool()
}
return sharedConfiguration
}
private static var sharedConfiguration : WKWebViewConfiguration!
}
我在每个 webView 上传递这个,从我读到的应该是共享 Cookie 的解决方案。
但是因为我正在通过 webContent 进行登录,所以无论用户是否登录,我都希望webViews 同步。
问题发生在用户登录时。我遵循的步骤是:
1)我已经确定了主机和路径,并
在用户发出请求时检查navigationAction.request.url.host和,并且请求仅在凭据正确的情况下发生(所以我知道正确的主机和路径)我创建了一个 bool var 来指示用户已登录navigationAction.request.url.path
2) 在 WebView didFinish : FINISH 之后,我调用一个函数来重新加载必须刷新 的 webView,但 WebView 的行为不像它们有 cookie。
3)几秒钟后(每次不同),在每个预览中添加手动代码.reload()web视图,webviews被同步。
我正在开发 iOS 9,因为这些是要求。
看起来 cookie 是异步的,据我了解,它们最终到达了共享的 processPool 或 websiteDataStore。
有人有一个可靠的解决方案吗?