我们有一个iOS应用程序,它使用WkWebView在苹果iPod上加载一个web应用程序。它支持自动登录功能,无需用户手动输入凭据。我们使用POST html表单提交逻辑和凭证来模拟自动登录。
web应用程序有一个15分钟的超时,在此之后,用户将注销并重定向到登录屏幕和一个名为"超时"的消息;将显示在登录界面。
我们看到的问题是,每当用户新启动应用程序时(此时后台/前台都没有运行),期望表单提交将作为HTML加载到webview上,用户将登录(如果凭据正确)(或)用户将被重定向到登录屏幕(凭据无效消息)。
webview。loadHTMLString(html, baseURL: myURL)
但在这种情况下,用户被重定向到登录屏幕,并提示"超时";(这是应用程序的前一个状态)。用户试图杀死应用程序(双击主键并向上滑动)并重新启动应用程序,经过2-3次尝试后,他成功获得身份验证并进入主屏幕。在前2-3次尝试中,他看到的都是"超时";非预期消息。
是WKWebView缓存页面的某些原因(或)iOS应用程序是做错了什么?如果有任何关于如何调试的建议,我将不胜感激。
注意:我们的业务不希望清除缓存,因为每次加载都需要~20秒。因此,我们缓存应用程序。
您总是可以测试清除所有WebView
数据,看看它是否有帮助。试试下面的代码在ViewController
的deinit{}
或你清理应用程序后,如果被关闭。
下面的代码将删除与发生的web会话相关的所有数据。
for cookie in HTTPCookieStorage.shared.cookies ?? [] {
HTTPCookieStorage.shared.deleteCookie(cookie)
}
URLCache.shared.removeAllCachedResponses()
WKWebsiteDataStore.default().removeData(
ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(),
modifiedSince: Date(timeIntervalSince1970: 0),
completionHandler:{})