在iOS应用程序中如何清除Safari的缓存?

4
请不要标记为重复,因为我已经尝试了所有方法,但都没有起作用,请有人帮助我。
我的应用程序具有Google登录功能,当我登录时,会显示之前已经登录的所有帐户。如何删除这些帐户?
提前感谢您的帮助。
//MARK:- clear Cache
                URLCache.shared.removeAllCachedResponses()
                URLCache.shared.diskCapacity = 0
                URLCache.shared.memoryCapacity = 0
                self.deleteCoreData()

                GIDSignIn.sharedInstance().disconnect()
                GIDSignIn.sharedInstance().signOut()
                for cookie in HTTPCookieStorage.shared.cookies! {
                    HTTPCookieStorage.shared.deleteCookie(cookie)
                }

                // Removes cache for all responses
                URLCache.shared.removeAllCachedResponses()

很抱歉,这是重复的问题,但我尝试了以上代码,它不起作用。请问有人能指导我错在哪里吗? 再次感谢。


你有找到任何解决方案吗? - Shruti Thombre
2个回答

2

对于Swift 3.0,可以通过以下方式清除所有URL缓存和Cookie

URLCache.shared.removeAllCachedResponses()

if let cookies = HTTPCookieStorage.shared.cookies {
    for cookie in cookies {
        HTTPCookieStorage.shared.deleteCookie(cookie)
    }
}

0
尝试删除特定的cookie,与auth相关,例如:
var cookieProperties = [HTTPCookiePropertyKey:String]()
cookieProperties[.name] = "<cookie_name>"
cookieProperties[.domain] = "<domain>"
cookieProperties[.originURL] = "<origin_url>"
// <... etc ...>
if let cookie = HTTPCookie(properties: cookieProperties) {
    HTTPCookieStorage.shared.deleteCookie(cookie)
}

或者如果您的情况允许,可以直接删除所有的cookies:

if let cookies = HTTPCookieStorage.shared.cookies {
    for cookie in cookies {
        HTTPCookieStorage.shared.deleteCookie(cookie)
    }
}

2
问题标记为Swift,而不是Objective-C。最好用正确的语言发布答案。 - rmaddy
好的,谢谢指出。没有注意到 Swift 标签。 - degapps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接