2017-07-17 2 views
0

Ich möchte eine Webseite in eine UIWebView laden, mit URLSession.iOS - Ephemere Sitzung und UIWebView

Eine ephemere Sitzung, in der Tat, weil ich nicht gerne die Sitzung speichern würde, wenn ich zum Beispiel eine Anmeldung auf Twitter/FB/was auch immer Website.

So habe ich eine UIWebView namens webPage

@IBOutlet var webPage: UIWebView! 

einem UITextField, wo ich

@IBOutlet var urlField: UITextField! 

Neben diesem Textfeld die URL schreiben kann, habe ich eine UIButton, dass Geräte Diese Aktion

@IBAction func sendUrl(_ sender: Any) { 
    let stringUrl = urlField.text 
    let url = URL (string: stringUrl!) 
    openPageWithSession(url: url!) 
} 

und die Funktion openPageWithSession, wo ich die ephemeren Sitzung

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() 

    } 

Das Laden der Webseite ok es ist verwenden. Aber wenn ich ein Login auf Twitter habe und danach die App kill, wenn ich die App wieder öffne und wieder auf Twitter navigiere, bin ich schon eingeloggt!

Warum? Die ephemere Sitzung ist nach einem Kill nicht ungültig?

+0

Ein Problem, das ich sehe, ist, dass 'self.webPage.loadRequest (request)' tatsächlich nicht die ephemere Sitzung verwendet, die Sie überhaupt erstellt haben, es nimmt nur die ursprüngliche Anfrage und lädt sie. – paulvs

+0

Führt das Laden nicht dank 'task.resume()' durch, wobei 'task' eine' dataTask' ist, die auf der ** ephemeren Sitzung ** aufgebaut ist? – strano

+1

Anstelle von 'self.webPage.loadRequest (request)' sollten Sie 'self.webView.load (data !, mimeType:" text/html ", textEncodingName:" ", baseURL: url)' verwenden. Auf diese Weise werden Sie die von Ihnen erstellte ephemere Sitzung verwenden. Andernfalls laden Sie die Webansicht normal, ohne die kurzlebige Sitzung. – paulvs

Antwort

1

Aus den obigen Kommentaren.

Statt self.webPage.loadRequest(request), sollten Sie verwenden:

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

Auf diese Weise können die ephemeren Sitzung werde mit Ihnen erstellt. Andernfalls laden Sie die Webansicht normal, ohne die kurzlebige Sitzung.