2011-01-04 14 views
50

Mam zamiar użyć NSHTTPCookieStorage w aplikacji na iOS do zarządzania plikami cookie, które są pobierane z adresu URL, i rozumiem, że będzie on zarządzał plikami cookie podczas działania aplikacji. Zastanawiałem się jednak, czy istnieje możliwość przechowywania plików cookie po zamknięciu aplikacji. A następnie przeczytaj te ciasteczka ponownie, gdy aplikacja zostanie ponownie otwarta. Czy pliki NSHTTPCookieStorage przechowują pliki cookie między aplikacjami? A może tylko podczas uruchamiania aplikacji? Czy muszę używać CoreData, aby przechowywać te pliki cookie? `Trwałe pliki cookie w aplikacji na iOS?

Odpowiedz

44

Musisz ponownie ustawić pliki cookie po załadowaniu aplikacji. Używam kodu takiego:

NSData *cookiesdata = [[NSUserDefaults standardUserDefaults] objectForKey:@"MySavedCookies"]; 
if([cookiesdata length]) { 
    NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookiesdata]; 
    NSHTTPCookie *cookie; 

    for (cookie in cookies) { 
     [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; 
    } 
} 

i działa dobrze.

+2

Czy "MySavedCookies" już tam jest? Czy muszę to przechowywać, gdy moja aplikacja wkrótce się wyłączy? – Alex

+1

Musisz to zrobić samemu. To jest właśnie miejsce, w którym uratuję moje. – Magnus

+3

Przechowywanie plików cookie w domyślnych ustawieniach użytkownika może być luką w zabezpieczeniach, ponieważ dostęp do wszystkich plików plist jest możliwy za pomocą narzędzi takich jak iFunBox itp. Powinny być zaszyfrowane, ale najlepiej postępować zgodnie z odpowiedzią @gazreese. –

103

Nie należy utrzymywać plików cookie w sposób sugerowany w drugiej odpowiedzi. NSHTTPCookieStorage będzie przechowywać pliki cookie, ale musisz upewnić się, że pliki cookie mają datę wygaśnięcia po stronie serwera.

Pliki cookie bez daty zakończenia są traktowane jako "tylko sesyjne" i zostaną wyczyszczone po ponownym uruchomieniu aplikacji. Możesz sprawdzić sytuację "tylko sesja" za pomocą właściwości BOOL w NSHTTPCookie. To standardowe pliki cookie, a nie coś konkretnego dla systemu iOS.

+0

Przyszedłem tutaj, szukając tej jasności, dzięki. Ciekawe, że jest wyczyszczone po ponownym uruchomieniu aplikacji. Możesz ponownie uruchomić Chrome na komputerze i nadal mieć otwartą sesję. – Dan2552

+0

+1 Teraz rozumiem, dlaczego moje pliki cookie już nie istnieją :). Dzięki !! – Niko

+0

Zaoszczędziłeś mi dużo czasu! Dzięki! –

Powiązane problemy