2017-07-17 35 views
0

我想使用URLSession将网页加载到UIWebViewiOS - 短暂会话和UIWebView

一个短暂会话,的确,因为我不想存储会话,例如,我已经在Twitter/FB /任何网站上登录。

所以,我有一个名为UIWebViewwebPage

@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,我已经登录了!

为什么?杀死后短暂会话不会失效?

+0

我看到的一个问题是'self.webPage.loadRequest(request)'实际上并不使用你创建的临时会话,它只是接收原始请求并加载它。 – paulvs

+0

由于'task.resume()'不执行加载,其中'task'是在**短暂会话**上构建的'dataTask'吗? – strano

+1

而不是'self.webPage.loadRequest(request)',你应该使用'self.webView.load(data !, mimeType:“text/html”,textEncodingName:“”,baseURL:url)''。这样你将使用你创建的短暂会话。否则,你只是正常加载Web视图,根本就没有短暂的会话。 – paulvs

回答

1

从上面的评论。

相反的self.webPage.loadRequest(request),你应该使用:

self.webView.load(data, mimeType: "text/html", textEncodingName: "", baseURL: url). 

这样,您将使用您创建的临时会话。否则,你只是正常加载Web视图,根本就没有短暂的会话。