Tüm UIWebView çerezleri nasıl silinir?


91

Başvurumda, UIWebviewgiriş için bağlantılı kimlik doğrulama sayfası yükleyen bir sayfam var. Kullanıcı oturum açtığında, çerezler uygulamaya kaydedilir.

Uygulamamın linkedin oturum açma ile ilgili olmayan bir çıkış düğmesi var. Dolayısıyla, kullanıcı bu düğmeyi tıkladığında uygulamadan çıkış yapar. Bu oturumun kapatılmasının bağlantılı çerezlerini uygulamadan da temizlemesini istiyorum, böylece kullanıcı oturumu tamamen kapatacaktır.

Yanıtlar:


209

Bu soruya göre , "Çerez Kavanozu" ndaki her bir çerezin üzerinden geçebilir ve aşağıdaki gibi silebilirsiniz:

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

@Felipe Geçici bir yol buldu, en son çıkış yaptıysanız uygulama yüklemesinde çerezleri silmeniz gerekiyor.
Ishu

Şimdi yapıyorum, ama gerçekten sadece geçerli oturum için sonsuza değil nasıl GERÇEKTEN silme çerezleri soruya cevap vermez tam olarak ne olduğunu, evet, iyi @Ishu
Felipe Brahm

Çerezleri kalıcı olarak siler. Daha sonra yapılan herhangi bir talep, çerezlerin yeniden oluşturulmasına neden olabilir. Ayrıca, çerezleri yalnızca bir kullanıcının oturumu kapattığı durumlarda silmek istiyorsanız, o zaman yalnızca oturum çerezlerini silmenizi tavsiye ederim, çünkü oturumu kapatmak gerçekten sadece oturumun sonlandırılmasıdır. Aksi takdirde, bir kullanıcının oturumlar boyunca devam etmek istediği potansiyel ayarları kaybedersiniz.
dsingleton

19
Değişikliklerin diske kaydedildiğinden emin olmak için [[NSUserDefaults standardUserDefaults] senkronizasyonunu çağırdığınızdan emin olun. @felipe bu nedenle, çerezlerin sonraki çalıştırmalarda geri döndüğünü görüyorsunuz.
Yetanotherjosh

Bunu denedim ama depolama dönüşü 0 sayıyorum, iOS 8 Simulator üzerinde test ediyorum.Peki facebook çerezlerini safaride nasıl silebilirim.
Nada Gamal

8

Bununla ilgili biraz bilgi eklemek istedim.

In OS X 10.9 / iOS 7 ve üstü, şunları kullanabilirsiniz -resetWithCompletionHandler: çerezleri ve önbelleği vb hesabınızla ilgili tüm app temizlemek için sharedSession:

Tüm tanımlama bilgilerini, önbellekleri ve kimlik bilgisi depolarını boşaltır, disk dosyalarını kaldırır, devam eden indirmeleri diske aktarır ve yeni bir sokette gelecekteki isteklerin gerçekleşmesini sağlar.

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

İçin-In döngü ile deleteCookie:benzer sesler bir koleksiyon numaralandırılırken değiştirerek bana. (Bilmiyorum, kötü bir fikir olabilir mi?)


Başarıyla çalışan her iki yöntemi de kullandım, ancak yine de Google'ın tüm bunlardan sonra (oturum açmadan) hala bir arama geçmişi gösterdiğini görüyorum. Herhangi bir fikir? Teşekkürler
mylogon

Bu, Alamofire'ın herhangi bir durumunu ve Arka Uç REST API'lerimi tüketimimi etkiler mi? Alamofire, çözümünü URLSession'a dayandırmıyor mu?
Sajjon

1

Çerezleri temizleyen WebView html'si içinde bir işlev yapabilirsiniz.

Temizliğin yalnızca bir kez yapılmasına ihtiyacınız varsa, bu işlevi yalnızca uygulama başladığında bir Titanium olayıyla tetikleyebilirsiniz.


1

Swift Çözümü arayan biri varsa:

    let storage = HTTPCookieStorage.shared
    if let cookies = storage.cookies{
        for cookie in cookies {
             storage.deleteCookie(cookie)
        }
    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.