URLSession是否在iOS上使用自定义CookieStorage?

URLSession是否在iOS上使用自定义CookieStorage?,ios,swift,urlsession,nshttpcookiestorage,Ios,Swift,Urlsession,Nshttpcookiestorage,我需要一个urlsession,它将cookies存储在一个单独的cookieStorage中 在下面的代码中,urlSession中的cookieStorage与shares cookieStorage相同,是否可以创建单独的cookie存储 let config = URLSessionConfiguration.default session = URLSession(configuration: config) config.httpCookieAcceptPol

我需要一个urlsession,它将cookies存储在一个单独的cookieStorage中

在下面的代码中,urlSession中的cookieStorage与shares cookieStorage相同,是否可以创建单独的cookie存储

    let config = URLSessionConfiguration.default
    session = URLSession(configuration: config)
    config.httpCookieAcceptPolicy = .always
    session.configuration.httpCookieStorage = HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier: "adfadf")

    let task = session.dataTask(with: URL(string: "https://www.google.com")!) { (data, response, error) in
        print((response as? HTTPURLResponse)?.allHeaderFields ?? "")

        DispatchQueue.main.async {
            print(self.session.configuration.httpCookieStorage?.cookies ?? "wtf")
            print(HTTPCookieStorage.shared === self.session.configuration.httpCookieStorage)
        }
    }

    task.resume()
如果我使用
HTTPCookieStorage()

编辑

我尝试手动创建cookie存储,并在请求完成后将cookie添加到其中

let cookies = HTTPCookie.cookies(withResponseHeaderFields: headers, for: url)
 // cookies is not empty
self.cookieStore.setCookies(cookies, for: url, mainDocumentURL: nil)
print(self.cookieStore.cookies) //result is nil

最后,我以nil作为cookie结束

如果您打开
NSHTTPCookieStorage
的头文件,您将看到此文档(由于某些原因,这些详细信息不会出现在常规文档中)

为了拥有有效的应用程序组,您需要按照中的说明添加它


我猜,由于您没有将应用程序组添加到您的权利中,它默认为
NSHTTPCookieStorage.shared
显然
HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier:“groupName”)
似乎只在iOS 10+上工作,在iOS 9上,它将返回nil,即使文档中显示
@可用(iOS 9.0,*)
打开类func sharedCookieStorage(forGroupContainerIdentifier标识符:String)->HTTPCookieStorage

您可以使用以下解决方法:

let cookies: HTTPCookieStorage
    if #available(iOS 10.0, *) {
        cookies = HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier: "groupName")
    } else {
        cookies = HTTPCookieStorage.shared
    }

最后有用吗?
let cookies: HTTPCookieStorage
    if #available(iOS 10.0, *) {
        cookies = HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier: "groupName")
    } else {
        cookies = HTTPCookieStorage.shared
    }