Bối cảnh
Tôi đang phát triển một ứng dụng iPad đơn giản cho phép người dùng duyệt cùng một trang web với các thông tin đăng nhập khác nhau cùng một lúc. Do đó tôi có hai số UIWebView
và họ nên có bộ nhớ cookie khác nhau để người dùng có thể đăng nhập một tài khoản trên UIWebView
và một tài khoản khác trên số UIWebView
thứ hai.Có lưu trữ cookie riêng cho hai UIWebView không?
Tôi đã thử gì?
Tôi nghĩ giải pháp là triển khai kho lưu trữ cookie khác nhau trong hai số UIWebView
tôi có.
Sasmito Adibowo đã viết một bài báo Implementing Your Own Cookie Storage cung cấp chi tiết về cách sử dụng bộ nhớ cookie tùy chỉnh cho WebView
trên máy Mac.
Nó được thực hiện bằng cách sửa đổi NSURLRequest rằng WebView
sẽ gửi, thêm tiêu đề cookie vào nó và cũng chặn phản hồi từ WebView
và trích xuất cookie từ tiêu đề phản hồi và lưu vào bộ nhớ cookie của chính chúng ta.
Về mặt kỹ thuật, nó được thực hiện bằng cách thực hiện các phương pháp này hai đại biểu:
- (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
Mặc dù nó được cung cấp tài liệu, UIWebView
đã hỗ trợ một trong những phương pháp trên với một tên phương pháp hơi khác nhau:
- (NSURLRequest *)uiWebView:(UIWebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(id)dataSource
Tuy nhiên, UIWebView
không có phương thức ủy nhiệm tương đương cho webView:resource:didReceiveResponse:fromDataSource:
và do đó tôi không thể trích xuất cookie từ tiêu đề phản hồi.
Các Câu hỏi
Có cách nào để có UIWebView
sử dụng một lưu trữ cookie tùy chỉnh, vì vậy hai UIWebView
có thể lưu trữ cookie của riêng họ?
Cảm ơn!
trong 'webViewDidStartLoad', yêu cầu đã được gửi, do đó, bản hack của bạn không hoạt động. Di chuyển nó sang 'shouldStartLoadWithRequest' có thể hoạt động. Tuy nhiên, hack của bạn sẽ không cho phép cả UIWebView tải yêu cầu cùng một lúc. – howanghk
@bdev câu trả lời Tôi muốn trong nhanh 3,0 có thể giúp tôi. –