2015-01-30 15 views
9

Jest ta nowa wspaniała metoda z NSHTTPCookieStorage, dostępna od MacOS 10.10 i iOS 8.0. Odgadywanie od niewielkiej liczby trafień w Google, nikt jeszcze tego nie zauważył. Nie jest to takie zaskakujące, biorąc pod uwagę, że nie ma go jeszcze w dokumentach portalu Apple dev, tylko w nagłówku. Ale nadal mam nadzieję, że ktoś wie, jak go używać, bo nie :) Próbuję go użyć do czyszczenia wszystkich plików cookie zamiast zawstydzającej iteracji plików cookie. Więc nazwałem goJak należy używać `removeCookiesSinceDate`?

[NSDate dateWithTimeIntervalSince1970:0] 

i boom, EXC_BAD_ACCESS w MemoryCookies::visitCookies. Ok UN * X epoka była prawdopodobnie zbyt podła. Więc spróbowałem ponownie:

[NSDate dateWithTimeIntervalSinceNow:-86400]; 

i BOOM ponownie. Kontynuowałem dzielenie przedziału i dowiedziałem się, że rzeczywiście chce co najmniej jeden plik cookie co najmniej tak stary jak parametr date. Więc i tak musicie powtórzyć pliki cookie, aby znaleźć najstarszy numer , a następnie wywołać nową metodę lśniącą. Jest to tak absurdalnie niepraktyczne, że ośmielam się nazwać to błędem.

Myśli?

+0

FWIW, https://github.com/mluton/SafariCookies wydaje się działać. Nie ma opcji daty, ale ma opcję "wszystkie", a źródło jest dostępne dla modów. Używam go z listą wykluczeń, więc mogę zatrzymać kilku "dobrych facetów". – WGroleau

Odpowiedz

2

Działa zgodnie z oczekiwaniami co najmniej od czasu iOS 8.1, to znaczy usuwa pliki cookie bez względu na wiek i nie ulega awarii. Interesujące jest to, że nadal znajduje się w pliku the headers, ale nie w kakao o numerze iOS ani w postaci OSX. Prawdopodobnie coś z NSHTTPCookieStorage jest nadal "API w rozwoju" od iOS 2.0.

UPDATE Teraz także w Cocoa reference docs

2

ja sądzę, że to jest błąd we wszystkich wersjach iOS 8. udało mi się wywołać to w iOS 8.3. Zdecydowałem się ręcznie usunąć pliki cookie w następujący sposób:

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; 
for (NSHTTPCookie *cookie in cookies) { 
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie]; 
} 
Powiązane problemy