Hintergrund
Ich entwickle eine einfache iPad-Anwendung, die es dem Benutzer ermöglicht, die gleiche Website mit verschiedenen Logins gleichzeitig zu durchsuchen. Daher habe ich zwei UIWebView
und sie sollten unterschiedliche Cookie-Speicher haben, so dass der Benutzer ein Konto auf der ersten UIWebView
und ein anderes Konto auf der zweiten UIWebView
anmelden kann.Mit separaten Cookie-Speicher für zwei UIWebView?
Was habe ich versucht?
Ich denke, die Lösung besteht darin, verschiedene Cookie-Speicher in den beiden UIWebView
ich habe zu implementieren.
Sasmito Adibowo schrieb einen Artikel Implementing Your Own Cookie Storage, die Details zur Verwendung eines benutzerdefinierten Cookie-Speichers für WebView
auf Mac bereitstellen.
Es wird durch Ändern der NSURLRequest, die WebView
senden wird, Hinzufügen von Cookies Header, und abfangen der Antwort von WebView
und extrahieren Sie die Cookies aus der Antwort-Header und speichern Sie es in unserem eigenen Cookie-Speicher.
Technisch wird es durch die Umsetzung dieser beiden Delegatmethoden getan:
- (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
Obwohl es nicht dokumentiert ist, UIWebView
tat Unterstützung eines der oben beschriebenen Methode mit einem etwas anderen Verfahren Name:
- (NSURLRequest *)uiWebView:(UIWebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(id)dataSource
jedoch UIWebView
haben keine entsprechende Delegate-Methode für webView:resource:didReceiveResponse:fromDataSource:
und daher kann ich die Cookies aus den Antwortheadern nicht extrahieren.
Die Frage
Gibt es eine Möglichkeit UIWebView
haben einen benutzerdefinierten Cookie-Speicher zu verwenden, so dass die beiden UIWebView
kann seinen eigenen Cookie Speicher haben?
Danke!
in 'webViewDidStartLoad', die Anfrage wurde bereits gesendet, daher hat Ihr Hack nicht funktioniert. Das Verschieben nach 'shouldStartLoadWithRequest' funktioniert möglicherweise. Ihr Hack lässt jedoch nicht zu, dass beide UIWebView-Anfragen gleichzeitig geladen werden. – howanghk
@bdev antwort ich will in swift 3.0 kann mir helfen. –