iOS - 短暂会话和UIWebView
问题描述:
我想使用URLSession
将网页加载到UIWebView
。iOS - 短暂会话和UIWebView
一个短暂会话,的确,因为我不想存储会话,例如,我已经在Twitter/FB /任何网站上登录。
所以,我有一个名为UIWebView
webPage
@IBOutlet var webPage: UIWebView!
一个UITextField
,在那里我可以写URL
@IBOutlet var urlField: UITextField!
下一步该文本字段,我有一个UIButton
,实现此动作
@IBAction func sendUrl(_ sender: Any) {
let stringUrl = urlField.text
let url = URL (string: stringUrl!)
openPageWithSession(url: url!)
}
和功能openPageWithSession
,这里我用的是临时会议
func openPageWithSession(url: URL){
let request = URLRequest(url: url)
let ephemeralConfiguration = URLSessionConfiguration.ephemeral
let ephemeralSession = URLSession(configuration: ephemeralConfiguration)
let task = ephemeralSession.dataTask(with: request) { (data, response, error) in
if error == nil {
self.webPage.loadRequest(request)
} else {
print("ERROR: \(error)")
}
}
task.resume()
}
网页这是确定的加载。但是,如果我在Twitter上登录并在此之后杀了该应用,如果我重新打开该应用并再次导航Twitter,我已经登录了!
为什么?杀死后短暂会话不会失效?
答
从上面的评论。
相反的self.webPage.loadRequest(request)
,你应该使用:
self.webView.load(data, mimeType: "text/html", textEncodingName: "", baseURL: url).
这样,您将使用您创建的临时会话。否则,你只是正常加载Web视图,根本就没有短暂的会话。
我看到的一个问题是'self.webPage.loadRequest(request)'实际上并不使用你创建的临时会话,它只是接收原始请求并加载它。 – paulvs
由于'task.resume()'不执行加载,其中'task'是在**短暂会话**上构建的'dataTask'吗? – strano
而不是'self.webPage.loadRequest(request)',你应该使用'self.webView.load(data !, mimeType:“text/html”,textEncodingName:“”,baseURL:url)''。这样你将使用你创建的短暂会话。否则,你只是正常加载Web视图,根本就没有短暂的会话。 – paulvs