UIWebView के सभी कुकीज़ कैसे हटाएं?


91

मेरे आवेदन में, मेरे पास UIWebviewलॉगिन के लिए लिंक लोड किया गया एक पृष्ठ है। जब उपयोगकर्ता लॉग इन करता है, तो कुकी एप्लिकेशन में सहेजती है।

मेरे ऐप में एक लॉगआउट बटन है जो लिंक्डइन लॉगिन से संबंधित नहीं है। इसलिए जब उपयोगकर्ता इस बटन पर क्लिक करता है, तो वह ऐप से लॉग ऑफ हो जाता है। मैं चाहता हूं कि यह लॉग ऑफ ऐप से उसकी लिंक्डइन कुकीज को भी साफ कर दे, ताकि यूजर पूरी तरह से लॉग आउट हो जाए।

जवाबों:


209

इस प्रश्न के अनुसार , आप "कुकी जार" में प्रत्येक कुकी के माध्यम से जा सकते हैं और उन्हें हटा सकते हैं, जैसे:

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [storage cookies]) {
   [storage deleteCookie:cookie];
}
[[NSUserDefaults standardUserDefaults] synchronize];

@ फ़ेलिप को एक अस्थायी तरीका मिला, अगर आपने पिछली बार लॉगआउट किया है तो ऐप लोड में कुकीज़ को हटाने की आवश्यकता है।
इशु

@ इशु ठीक है, हाँ, ठीक यही अब मैं कर रहा हूं, लेकिन यह वास्तव में इस सवाल का जवाब नहीं देता है कि वास्तव में कुकीज़ को हमेशा के लिए कैसे हटाएं और न केवल वर्तमान सत्र के लिए
फेलिप ब्रह्म

यह स्थायी रूप से कुकीज़ हटाता है। कुकीज़ के बाद किए गए किसी भी अनुरोध को फिर से बनाया जा सकता है। इसके अलावा, यदि आप केवल उन स्थितियों के लिए कुकीज़ को हटाना चाहते हैं जहां कोई उपयोगकर्ता लॉग आउट कर रहा है, तो मैं केवल सत्र कुकीज़ को हटाने की सलाह दूंगा, क्योंकि लॉग आउट करना वास्तव में सत्र का समापन है। अन्यथा आप संभावित सेटिंग्स खो देते हैं जो उपयोगकर्ता सत्रों में बने रहना चाहता है।
dsingleton

19
सुनिश्चित करें कि [[NSUserDefaults standardUserDefaults] सिंक्रनाइज़ करें] यह सुनिश्चित करने के लिए कि परिवर्तन डिस्क में सहेजे गए हैं। @ इस कारण से आप कुकीज़ को बाद के रनों पर वापस देख रहे हैं।
यतनथोरजोश

मैंने इसकी कोशिश की, लेकिन स्टोरेज रिटर्न 0 काउंट है, मैंने इसे iOS 8 सिम्युलेटर पर टेस्ट किया है। इसलिए मैं सफारी पर फेसबुक की कुकीज़ को हटाने के लिए कैसे कर सकता हूं।
नाडा गमाल

8

बस इसके बारे में कुछ जानकारी जोड़ना चाहता था।

में ओएस एक्स 10.9 / iOS 7 और बाद में, आप उपयोग कर सकते हैं : -resetWithCompletionHandler कुकी और कैश अपने से पूरे एप्लिकेशन के आदि स्पष्ट करने के लिए sharedSession:

सभी कुकीज़, कैश और क्रेडेंशियल स्टोर को खाली करता है, डिस्क फ़ाइलों को हटाता है, डिस्क में प्रगति डाउनलोड को फ्लश करता है, और यह सुनिश्चित करता है कि भविष्य के अनुरोध एक नए सॉकेट पर होते हैं।

[[NSURLSession sharedSession] resetWithCompletionHandler:^{
    // Do something once it's done.
}];

के लिए-इन पाश के साथ deleteCookie:की तरह लगता है , जबकि एक संग्रह की गणना को संशोधित मेरे लिए। (पता नहीं, एक बुरा विचार हो सकता है?)


मैंने दोनों विधियों का उपयोग किया है जो सफलतापूर्वक चलते हैं, लेकिन मुझे अभी भी पता चल रहा है कि इस सब के बाद भी Google एक खोज इतिहास दिखा रहा है (साइन इन नहीं है)। कोई विचार? धन्यवाद
mylogon

क्या यह मेरे बैकएंड रीस्ट एपीआई की अल्मोफायर और मेरी खपत के किसी भी राज्य को प्रभावित करेगा? क्या Alamofire URLSession पर इसके समाधान का आधार नहीं है?
सज्जन जू

1

आप WebView के HTML के अंदर एक फंक्शन बना सकते हैं, जो कुकीज़ को साफ करता है।

यदि आपको केवल एक बार टाइटेनियम फ़ंक्शन के साथ इस फ़ंक्शन को ट्रिगर करने के लिए सफाई की आवश्यकता है, तो केवल ऐप शुरू होने पर।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.