gpt4 book ai didi

ios - 未调用 WKHTTPCookieStore.setCookie 完成处理程序

转载 作者:IT王子 更新时间:2023-10-29 05:37:05 31 4
gpt4 key购买 nike

我需要在 WKWebView 实例之间共享 cookie - 为此,我使用单个 WKWebViewConfiguration 实例,然后用于初始化每个 WKWebView。

为了做到这一点,我假设我必须使用共享的 WKProcessPool,例如:

let websiteDataStore = WKWebsiteDataStore.default()
websiteDataStore.httpCookieStore.add(self)

let configuration = WKWebViewConfiguration()
configuration.websiteDataStore = websiteDataStore
configuration.processPool = WKProcessPool() /* !!! */

但是这样做会导致 setCookie 完成处理程序不会触发。

let cookieStore = self.webConfiguration.websiteDataStore.httpCookieStore
cookieStore.setCookie(cookie, completionHandler: {
})

如果我不设置 WKProcessPool (*) 实例 - 那么完成 block 会正常触发,但显然 WebViews 看不到 cookie;/有人遇到过这个吗?关于如何共享 cookie 的想法?

iOS: 11.2.6

最佳答案

经过进一步测试后,我设法找到了解决方案 - 尽管我不确定发生了什么。简而言之 - 在 WKWebView 实例化后,上面的 完成处理程序会触发 OK。

在我的例子中,我需要在登录后设置一些 cookie(因此不会显示 ATM 的网页 View )。所以调用 setCookie 只会在某处排队这些操作——当 Web 客户端被触发时它们会被刷新。如果有人可以链接文档 - 那太好了!


更新

由于这个问题仍然存在 - 我终于回到了这个问题上。我现在的解决方案是:

  1. 在钥匙串(keychain)中缓存 cookie 值(每次应用程序调用 HTTPCookieStore.setCookie - 这可能完成或不完成(这是问题所在)

  2. 当 HTTPCookieStore.setCookie{ } 完成 block 触发时(确认 cookie 确实已设置)我然后从钥匙串(keychain)中删除值,webview 现在负责 cookie 值的生命周期)

  3. 每次启动应用程序时,我都会检查 cookie 值是否缓存在钥匙串(keychain)中 -> 如果是,则 HTTPCookieStore.setCookie()

上面可以无限​​循环,直到实际打开 webview。

关于ios - 未调用 WKHTTPCookieStore.setCookie 完成处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49452968/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com