2015-01-30 3 views
9

मैकोज़ 10.10 और आईओएस 8.0 के बाद उपलब्ध NSHTTPCookieStorage की यह नई शानदार विधि है। Google हिट की नगण्य संख्या से अनुमान लगाते हुए, अभी तक किसी ने भी इसे देखा नहीं है। इतना आश्चर्यजनक नहीं है कि यह अभी तक हेडर में ऐप्पल देव पोर्टल दस्तावेज़ों में भी नहीं है। लेकिन मुझे अभी भी उम्मीद है कि कोई इसका उपयोग कैसे करेगा, क्योंकि मैं नहीं करता :) मैं शर्मनाक कुकी जार पुनरावृत्ति के बजाय सभी कुकीज़ को साफ़ करने के लिए इसका उपयोग करने की कोशिश कर रहा हूं। तो मैं MemoryCookies::visitCookies में'हटाए गए कुकीजसेन्सडेट' का उपयोग कैसे किया जाना चाहिए?

[NSDate dateWithTimeIntervalSince1970:0] 

और बूम, EXC_BAD_ACCESS साथ यह कहा जाता है। ठीक यूएन * एक्स युग का मतलब बहुत मतलब था। तो मैंने

[NSDate dateWithTimeIntervalSinceNow:-86400]; 

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

विचार?

+0

FWIW, https://github.com/mluton/SafariCookies काम करने लगते हैं। दिनांक विकल्प नहीं है, लेकिन इसमें "सब" विकल्प है, और स्रोत मोड के लिए उपलब्ध है। मैं इसे एक बहिष्करण सूची के साथ उपयोग करता हूं, इसलिए मैं कुछ "अच्छे लोगों" रख सकता हूं। – WGroleau

उत्तर

2

यह कम से कम आईओएस 8.1 के बाद से अपेक्षित काम करता है, यानी उम्र के बावजूद कुकीज़ हटा देता है और क्रैश नहीं होता है। दिलचस्प बात यह है कि यह अभी भी the headers में है लेकिन iOS के लिए कोको संदर्भ में नहीं है और न ही OSX है। आईओएस 2.0 के बाद शायद NSHTTPCookieStorage के साथ कुछ "विकास में एपीआई" है।

अद्यतन अब भी में Cocoa reference docs

2

मैं इस मैं आईओएस 8.3 में इस गति प्रदान करने में सक्षम था आईओएस 8. के ​​सभी संस्करणों में एक बग है लगता है। मैंने कुकीज़ को मैन्युअल रूप से मैन्युअल रूप से हटाने का निर्णय लिया:

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; 
for (NSHTTPCookie *cookie in cookies) { 
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie]; 
} 
संबंधित मुद्दे