Borrado de cookies para WKWebView en iOS 8.4

Estoy construyendo una aplicación que utiliza inicio de session único para que los usuarios inicien session. Después de que el usuario ingrese un ID y una contraseña exitosos, el lado web de las cosas devuelve encabezados que agarro y almacena en mi aplicación. El WKWebView también establece una cookie que el usuario inició session correctamente. Esto es lo que quiero evitar o deshacer.

El comportamiento no deseado que estoy viendo es que si ingresas un usuario, todo va bien, y luego los desconecto y vuelvo a iniciar session, el WKWebView cree que el usuario todavía está conectado y los lleva a un estado no deseado URL

En iOS 9, mitigar esto es bastante simple:

let config = WKWebViewConfiguration() config.websiteDataStore = WKWebsiteDataStore.nonPersistentDataStore() let webView = WKWebView(frame: .zero, configuration: config) 

Sin embargo, en iOS 8.4, asegurarse de que las cookies estén claras cada vez que el usuario ingrese para cargar la URL de inicio de session único es más complicado.

He intentado enfoques en los que NSHTTPCookieStorage.shanetworkingHTTPCookieStorage() cookies en NSHTTPCookieStorage.shanetworkingHTTPCookieStorage() y los NSHTTPCookieStorage.shanetworkingHTTPCookieStorage() . Desafortunadamente, el recuento de cookies es 0.

También he intentado eliminar el directory /Cookies en NSFileManager.defaultManager() . Esto tampoco funciona.

Una cosa que funcionó fue haciendo lo siguiente. Aunque este enfoque no me permitió get los encabezados porque una networkingirección después del inicio de session tenía que ocurrir y esto interfería (en iOS 9+ y 8.4)

 req = NSMutableURLRequest(URL: url) req?.HTTPShouldHandleCookies = false let webView = WKWebView() webView.loadRequest(req ?? NSURLRequest(URL: url)) 

Preferiría borrar las cookies en el deinit de vista de mi vista que contiene mi WKWebView si esa es una solución posible aquí.

Esto podría ser muy importante, pero ¿qué pasa si se anula la política de aceptar cookies para rechazar todas las cookies al momento de iniciar session?

 NSHTTPCookieStorage.shanetworkingHTTPCookieStorage().cookieAcceptPolicy = .Never 

Otra idea sería administrar manualmente las cookies con una subclass WKProcessPool personalizada (que no está realmente documentada). Creo que así es como Firefox gestiona cualquier problema de cookies.

Incluso si lo mencionas, ¿es este el enfoque que ya has probado en tu deinit ?

 let storage = NSHTTPCookieStorage.shanetworkingHTTPCookieStorage() for cookie in storage.cookies! { storage.deleteCookie(cookie) }