पृष्ठभूमि
मैं एक साधारण आईपैड एप्लिकेशन विकसित कर रहा हूं जो उपयोगकर्ता को एक ही समय में एक ही वेबसाइट को विभिन्न लॉग इन के साथ ब्राउज़ करने की अनुमति देता है। इसलिए मेरे पास दो UIWebView
हैं और उनके पास अलग कुकी स्टोरेज होना चाहिए ताकि उपयोगकर्ता पहले UIWebView
पर दूसरे खाते और दूसरे UIWebView
पर एक खाता लॉगिन कर सकें।दो UIWebView के लिए अलग कुकी संग्रहण होने के बाद?
मैंने क्या प्रयास किया है?
मुझे लगता है कि समाधान दो UIWebView
में विभिन्न कुकी स्टोरेज लागू करना है।
सास्मिटो आदिबोव ने एक लेख Implementing Your Own Cookie Storage लिखा जो मैक पर WebView
के लिए कस्टम कुकी स्टोरेज का उपयोग करने के तरीके के विवरण प्रदान करता है।
यह NSURLRequest को संशोधित करके किया जाता है कि WebView
भेजने के लिए जा रहा है, इसमें कुकी हेडर जोड़ना है, और WebView
से प्रतिक्रिया को रोकना और प्रतिक्रिया शीर्षलेख से कुकीज़ निकालना और इसे अपने स्वयं के कुकी संग्रहण में सहेजना है। ,
- (NSURLRequest *)uiWebView:(UIWebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(id)dataSource
हालांकि:
- (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
हालांकि यह undocumented है, UIWebView
समर्थन थोड़ी भिन्न विधि का नाम के साथ उपरोक्त विधि से एक किया:
तकनीकी तौर पर, यह इन दो प्रतिनिधि तरीकों को लागू करने से किया जाता है UIWebView
webView:resource:didReceiveResponse:fromDataSource:
के लिए समकक्ष प्रतिनिधि विधि नहीं है और इसलिए मैं प्रतिक्रिया शीर्षकों से कुकीज़ निकालने नहीं कर सकता।
प्रश्न
वहाँ एक कस्टम कुकी संग्रहण का उपयोग करना UIWebView
के लिए एक रास्ता है, इसलिए दो UIWebView
अपने स्वयं के कुकी स्टोरेज हो सकती है?
धन्यवाद!
NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
[self.cookies addObject:cookie];
}
और सही होने के बाद (self.cookies से मूल्यों और चाबी पुनर्प्राप्त करें) इन कुकी संग्रहीत:
'webViewDidStartLoad' में, अनुरोध पहले से ही भेजा गया है, इसलिए आपका हैक काम नहीं करता है। इसे 'mustStartLoadWithRequest' पर ले जाना काम कर सकता है। हालांकि, आपका हैक UIWebView दोनों को एक साथ अनुरोध लोड करने की अनुमति नहीं देगा। – howanghk
@bdev उत्तर मैं स्विफ्ट 3.0 में चाहता हूं मेरी मदद कर सकता है। –