2017-07-17 45 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視圖,根本就沒有短暫的會話。