我正在开发具有WKWebView
和本机登录屏幕的iOS应用程序。在本机登录屏幕上,用户可以登录,这是通过返回一个JSON对象和两个cookie的API调用完成的。
我想做的是,当呼叫成功并且用户转到WKWebView
屏幕时,他们也登录到显示的网站。
WKWebView
已经加载,所以我的问题是我应该如何处理cookie,以便用户登录到WKWebView
? 我已经阅读了这个问题和答案,但这对我不起作用。WKWebView
没有显示任何内容,所以我认为它被阻止或循环。
更新我正在使用多个 WKWebViews,我发现如果我进行 API 调用,然后转到一个 WKWebView 它工作正常,我已经登录了。这里棘手的部分可能是我正在使用多个WKWebViews。
我终于找到了解决 cookie 问题的方法。
我必须为我的所有WKWebViews
创建一个全局WKProcessPool
,并且我必须在每次登录调用时从HTTPCookieStorage.shared.cookies
发送cookie,以便我返回的cookie仍然连接到WKWebViews
并且没有任何丢失。希望这对有同样问题的人有所帮助。
您的用例在 iOS11 中以优雅的方式通过 WKHTTPCookieStore 得到支持。通过 JSON API 登录并获取 cookie 后,使用 setCookie 自动登录 WKWebView 中的用户。
WKWebView正在iOS11中接受重大更新,并开辟了许多新的有趣可能性。在WKWebView WWDC中的自定义加载会话中有一个特定用例的演示。
不幸的是,如果您需要在iOS10或更早版本上完成此操作,这将无济于事。