Konto
Pracuję nad prostą aplikacją na iPada, która umożliwia użytkownikowi przeglądanie tej samej witryny z różnymi loginami w tym samym czasie. Dlatego mam dwa UIWebView
i powinny one mieć inne przechowywanie plików cookie, aby użytkownik mógł zalogować się na jedno konto na pierwszym UIWebView
i inne konto na drugim UIWebView
.Masz oddzielne miejsce przechowywania plików cookie dla dwóch UIWebView?
Co próbowałem? Myślę, że rozwiązaniem jest zaimplementowanie różnych magazynów plików cookie w dwóch posiadanych UIWebView
.
Sasmito Adibowo napisał artykuł Implementing Your Own Cookie Storage, który zawiera szczegółowe informacje na temat używania niestandardowego magazynu plików cookie dla komputerów Macintosh WebView
.
Dokonuje się tego, modyfikując NSURLRequest, który będzie wysyłać WebView
, dodając do niego nagłówki plików cookie, a także przechwycić odpowiedź z WebView
i wyodrębnić pliki cookie z nagłówka odpowiedzi i zapisać je w naszym własnym magazynie plików cookie.
Technicznie, że odbywa się to poprzez wdrożenie tych metod dwa Delegat:
- (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
Chociaż jest nieudokumentowane, UIWebView
poparł jeden z powyższą metodą, z nieco inną nazwą metoda:
- (NSURLRequest *)uiWebView:(UIWebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(id)dataSource
jednak UIWebView
nie ma równoważnej metody delegowania dla webView:resource:didReceiveResponse:fromDataSource:
i dlatego nie mogę wyodrębnić plików cookie z nagłówków odpowiedzi.
Pytanie
Czy istnieje sposób, aby mieć UIWebView
użyć niestandardowego przechowywanie plików cookie, a więc dwa UIWebView
może mieć własne przechowywanie ciasteczek?
Dzięki!
w 'webViewDidStartLoad', żądanie jest już wysłane, dlatego twój hack nie działa. Przeniesienie go do 'shouldStartLoadWithRequest' może działać. Jednak twój hack nie pozwoli obu UIWebView załadować żądanie jednocześnie. – howanghk
@bdev odpowiedź Chcę w Swift 3.0 może mi pomóc. –