WKWebViewでログインして
↓
Cookie削除
↓
WKWebView表示…あれ?残ってる、情報が残っている…こわい
を削除したくてやっとこさ見つけたのが
https://github.com/jwfriese/FrequentFlyer/blob/50200c61b7502b03748f235cc02ae8d894ef7015/FrequentFlyer/HTTP/HTTPSessionUtils.swift
のやつ助かりました。これでこわいのはなくなりました。
ちなみにCookie削除仕切れなかったもの🙅…いかにも削除しました系なのに…
import WebKit
if let cookies = HTTPCookieStorage.shared.cookies {
for cookie in cookies {
HTTPCookieStorage.shared.deleteCookie(cookie)
}
}
ちゃんと削除できたもの🙆
import WebKit
URLSession.shared.reset {} //cookieやキャッシュのリセット
UserDefaults.standard.synchronize() //データの同期 いらない同期をあとで同期して変に値を残さないためな気がする。
let dataStore = WKWebsiteDataStore.default() //WKWebsiteに保存されている全ての情報の削除
dataStore.fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in
dataStore.removeData(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(), for: records, completionHandler: {})
}
しかしこれでも消えないことがある😱なぜ?
答え
↓
https://qiita.com/ShingoFukuyama/items/eede79a284c3669846e9
の
|
に書かれているようにCookieの共有をするためにWKProcessPoolを使っているときはこれも初期化しないといけないらしいです( ・ὢ・ )
初期化は以下のextension書いてCookieの削除をする時に以下呼ぶようにしました。ちょっとなんとなく納得いく書き方じゃないけどとりあえず。
WKProcessPool.shared.reset()
extension WKProcessPool {
static var shared = WKProcessPool()
func reset(){
WKProcessPool.shared = WKProcessPool()
}
}
色々ツッコミどころあるかもですがgithuburl乗せておきます。
指摘などは優しく教えていただけると嬉しいです。
githuburl
↓
https://github.com/sachiko-kame/WKWebViewSample
補足:
githubのところfacebookでなんでやっているの?に関してですが(誰にもまだ聞かれていない)、ログイン状態あるものなら正直なんでもよかったんですってだけです。( ・ὢ・ )
##おまけ
あと、ios10でbodyが渡せないからってリクエスト送ってそれをloadHTMLで表示するといいと書いてありましたがうまく行かずloadHTMLに実際行う動作書いてそのHTMLのボタンを開いた時点で勝手に押すを行いました。
#最後に…
WKWebViewって、ios10ではbodynilになるし、なんか色々めんどくさいですね。でも色々いいところもあると思って。