Bu, iOS 9'da giderilmiştir! WKWebView nihayet WKNavigationDelegate üzerindeki webView (_: didReceiveAuthenticationChallenge: completionHandler :) öğesine çağrı yapar. Ne yazık ki, bu kod, iOS 8 cihazlarda Xcode 7'de oluşturulmuş kodu çalıştırıyorsanız çalışmaz (en azından ilk testimde değil).
Aşağıdaki örneğimde, aslında sertifikayla hiçbir şey yapmıyorum ve yalnızca başka bir doğrulama yapmadan geçmesine izin vermiyorum (açıkça üretim kodu için kötü bir plan). Burada yapmak istediklerini daha fazla bilgi için bkz. Apple's docs (Liste 3).
Swift:
func webView(webView: WKWebView, didReceiveAuthenticationChallenge challenge: NSURLAuthenticationChallenge,
completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {
let cred = NSURLCredential.init(forTrust: challenge.protectionSpace.serverTrust!)
completionHandler(.UseCredential, cred)
}
Swift 3:
let cred = URLCredential(trust: challenge.protectionSpace.serverTrust!)
completionHandler(.useCredential, cred)
Swift 4:
func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
let cred = URLCredential(trust: challenge.protectionSpace.serverTrust!)
completionHandler(.useCredential, cred)
}
amaç-Cı
NSURLCredential * credential = [[NSURLCredential alloc] initWithTrust:[challenge protectionSpace].serverTrust];
completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
Teşekkür, ama bu sadece ilk URL yükü için yararlı olacağını, ama her şeyi HTTPS ile olup olmadığını web uygulaması geri kalanı gezinmek mümkün olmayacaktır. Kullanıcı herhangi bir bağlantıya tıkladığında, yeni URL’yi yüklemeyi deneyen web sayfası olacak ve sonra başarısız olacak, doğru mu? – Roi