WKWebView从HTTP请求中注入cookie

我正在开发具有WKWebView和本机登录屏幕的iOS应用程序。 在本机登录屏幕上,用户可以登录,这是通过返回JSON对象和两个cookie的API调用完成的。

我想要做的是,当呼叫成功并且用户进入WKWebView屏幕时,他们也会登录显示的网站。

WKWebView已经加载了,所以我的问题是如何处理cookie以便用户登录WKWebView ? 我已经阅读了这个问题和答案,但这对我不起作用。 WKWebView没有显示任何内容,所以我认为它被阻止或循环。

更新我正在使用多个WKWebViews,我发现如果我进行API调用,那么转到一个WKWebView它工作正常,我已经登录。可能这里棘手的部分是我使用多个WKWebViews。

我终于找到了我的cookie问题的解决方案。

我必须为我的所有WKWebViews创建一个全局WKProcessPool ,并且我必须在每次登录调用时从HTTPCookieStorage.shared.cookies发送cookie,这样我回来的cookie仍然连接到WKWebViews并且没有丢失。 希望这可以帮助有同样问题的人。

使用WKHTTPCookieStore以优雅的方式在iOS11中支持您的用例。 登录并通过JSON api获取cookie后,使用setCookie自动在WKWebView中登录用户。

WKWebView正在接收iOS11的重大更新,并开辟了许多新的有趣可能性。 在WKWebView WWDC会话中的自定义加载中有一个特定用例的演示。

不幸的是,如果您需要为iOS10或更早版本完成此操作,这将无济于事。