首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多个WKWebViews中同步iOS 9上的cookie

在多个WKWebViews中同步iOS 9上的cookie
EN

Stack Overflow用户
提问于 2018-11-09 12:49:02
回答 1查看 824关注 0票数 1

我使用的是2 ViewControllers和2 WKWebViews。

WebViews使用共享的WKWebViewConfiguration。扩展WKWebViewConfiguration {

代码语言:javascript
复制
static var Shared : WKWebViewConfiguration{
    if sharedConfiguration == nil{
        sharedConfiguration = WKWebViewConfiguration()
        sharedConfiguration.websiteDataStore = WKWebsiteDataStore.default()
        sharedConfiguration.processPool = WKProcessPool()
    }
    return sharedConfiguration
}

private static var sharedConfiguration : WKWebViewConfiguration!

}

我将这个传递到每个webView上,从我所读到的来看,这应该是共享Cookies的解决方案。

但是,由于我正在通过webContent进行登录,所以如果用户登录与否,我想让webViews 同步

当用户登录到中时,问题就会发生。我所遵循的步骤是:

1)我必须标识主机和路径,并在用户发出请求时检查navigationAction.request.url.hostnavigationAction.request.url.path,如果凭据正确(因此我知道正确的主机和路径),请求只发生,则创建一个bool,指示用户已登录。

2)在WebView didFinish : FINISH之后,我调用一个func,它重新加载必须刷新的webViews,但是WebViews的行为并不像它们有cookie。

3)经过几秒钟(每次不同的时间),在每次预览中添加.reload()代码webViews (),实现webViews的同步。

我正在研究iOS 9,因为这些都是需求。

根据我的理解,cookie看起来是异步的,最终到达共享的processPool或websiteDataStore。

有人有固溶体吗?

EN

回答 1

Stack Overflow用户

发布于 2018-11-10 04:47:39

您不需要共享相同的web配置,您只需要在创建每个web视图配置之后共享processPoolKWebsiteDataStore.default()。要验证,您可以从Safari developer工具中检查cookie。

正如@PS所提到的,没有解决办法可以让他同步cookies。我也遇到了同样的问题。但是我尝试了一些意想不到的方法来解决这个问题,那就是100%的工作。

Cookie同步需要一些时间与用于wkwebview的cookie存储同步。因此,我的修复只是做了虚拟的网络请求,将同步cookie在应用程序开始和之后,无论您必须使用您的登录或注销呼叫,您可以使用,而无需任何进一步的修改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53226012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档