NSHTTPCookieStorage 默認**內存存儲**,App 退出後 Cookie 丟失。需顯式設置 expiresDate 並同步到磁盤。
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [storage cookiesForURL:[NSURL URLWithString:@"https://yourdomain.com"]];
for (NSHTTPCookie *cookie in cookies) {
// 設置過期時間(如 30 天)
NSDictionary *props = [cookie properties];
props[NSHTTPCookieExpires] = [NSDate dateWithTimeIntervalSinceNow:30*24*3600];
NSHTTPCookie *persistentCookie = [NSHTTPCookie cookieWithProperties:props];
[storage setCookie:persistentCookie];
}
// 強制同步到磁盤(iOS 通常自動同步,但可顯式調用)
[[NSUserDefaults standardUserDefaults] synchronize];
UIWebView 會自動從共享 Cookie Storage 讀取匹配域名的 Cookie 發送請求,無需手動注入。WKWebsiteDataStore *dataStore = [WKWebsiteDataStore defaultDataStore];
dataStore.httpCookieStore.getAllCookies(^(NSArray *cookies) {
// 同樣設置 expiresDate
});
// 或使用 WKProcessPool 共享 Cookie 池
NSHTTPCookieStorage 進程級共享,同 App 內多 WebView 自動共享。NSHTTPCookieAcceptPolicy 或遵循 App Tracking Transparency。