Sfondo
Sto sviluppando una semplice applicazione per iPad che consente all'utente di navigare nello stesso sito Web con accessi diversi allo stesso tempo. Pertanto ho due UIWebView
e dovrebbero avere una diversa memorizzazione dei cookie in modo che l'utente possa accedere a un account sul primo UIWebView
e un altro account sul secondo UIWebView
.Disporre di una memoria cookie separata per due UIWebView?
Cosa ho provato?
Penso che la soluzione sia implementare diversi archivi di cookie nei due UIWebView
che ho.
Sasmito Adibowo ha scritto un articolo Implementing Your Own Cookie Storage che fornisce dettagli su come utilizzare una memoria cookie personalizzata per WebView
su Mac.
Si esegue modificando NSURLRequest che WebView
sta per inviare, aggiungendo intestazioni di cookie ad esso, e anche intercettare la risposta da WebView
ed estrarre i cookie dall'intestazione di risposta e salvarlo nella nostra memoria dei cookie.
Tecnicamente, è fatto mediante l'attuazione di questi metodi due delegato:
- (void)webView:(WebView *)sender resource:(id)identifier didReceiveResponse:(NSURLResponse *)response fromDataSource:(WebDataSource *)dataSource
- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource
Anche se è documentato, UIWebView
fatto sostegno uno del metodo sopra con un leggermente diverso nome di metodo:
- (NSURLRequest *)uiWebView:(UIWebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(id)dataSource
Tuttavia, UIWebView
non hanno un metodo delegato equivalente per webView:resource:didReceiveResponse:fromDataSource:
e quindi non riesco a estrarre i cookie dalle intestazioni di risposta.
La questione
C'è un modo per avere UIWebView
utilizzare una memorizzazione dei cookie personalizzato, così i due UIWebView
può avere il proprio memorizzazione dei cookie?
Grazie!
in 'webViewDidStartLoad', la richiesta è già stata inviata, quindi il tuo hack non ha funzionato. Spostarlo in 'shouldStartLoadWithRequest' potrebbe funzionare. Tuttavia, il tuo trucco non consentirà ad UIWebView di caricare simultaneamente la richiesta. – howanghk
@bdev risposta Voglio in swift 3.0 può aiutarmi. –