2017-07-17 4 views
0

私はURLSessionを使用して、UIWebViewにウェブページをロードしたいと思います。iOSの - エフェメラルセッションとのUIWebView

はかないセッション、確かに、私は例えば、私はツイッター/ FB /どんなサイト上でログインをした場合など、セッションを保存したくないので。だから、

、私は、私はUIButtonを私はこのテキストフィールドにURL

@IBOutlet var urlField: UITextField! 

次を書くことができますwebPage

@IBOutlet var webPage: UIWebView! 

UITextField、名前のUIWebViewきましたが、実装していることこの行動

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

と私はそれは大丈夫だ、Webページの読み込みはかないセッションに

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

    } 

を使用する機能openPageWithSession、。私がTwitterでログインをしましたし、その後、私はアプリを殺す場合、私は再びTwitterにアプリを再度開くとナビゲートしている場合しかし、私はすでにログインしています!

なぜですか?一時的なセッションは殺害の後無効になりませんか?上記のコメントから

+0

「self.webPage.loadRequest(request)」は、あなたが作成した一時セッションを実際には使用しないということです。ただ、元のリクエストを受け取りロードするだけです。 – paulvs

+0

は(task.resume 'への負荷のおかげを行いません)' 'どこtask'は' dataTask'が** **短期セッション上に構築されたのですか?代わりに、 'self.webPage.loadRequest(リクエスト)の – strano

+1

'は、 'self.webView.load(データ!、MIMEタイプURL: "text/htmlの"、textEncodingName: ""、ベースURL)を使用する必要があります'。そうすることで、作成した一時セッションを使用することになります。そうしないとあなただけでは、すべてのはかないセッションせずに、通常のWebビューをロードしています。 – paulvs

答えて

1

代わりのself.webPage.loadRequest(request)は、あなたが使用する必要があります。

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

この方法で、あなたが作成した一時的なセッションを使用することがあります。それ以外の場合は、一時的なセッションをまったく使わずにWebビューを通常どおり読み込んでいます。

関連する問題