Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> iOS

Cookie ứng dụng iOS được lưu ở đâu trên iPhone?

Cookie là các file nhỏ được lưu trên thiết bị khi duyệt web.

Trên iPhone, cookie thường liên quan đến:

  • Trình duyệt Safari
  • Ứng dụng sử dụng Web View (WKWebView, UIWebView - deprecated)

Một ứng dụng iOS thông thường không chứa cookie. Chỉ có cookie khi app có Web View.

Xem cookie Safari

Trên iPhone: Cài đặt → Safari → Nâng cao → Dữ liệu trang web. Tại đây liệt kê tất cả cookie/dữ liệu trang web.

Cookie trong iOS App (WKWebView)

WKWebView tự động lưu cookie vào HTTPCookieStorage.shared (shared cookie storage).

Truy xuất cookie trong code

// Lấy tất cả cookie
let cookies = HTTPCookieStorage.shared.cookies ?? []
for cookie in cookies {
    print("Name: \(cookie.name), Value: \(cookie.value), Domain: \(cookie.domain)")
}

// Lấy cookie cho URL cụ thể
if let cookies = HTTPCookieStorage.shared.cookies(for: URL(string: "https://example.com")!) {
    for cookie in cookies {
        print("\(cookie.name)=\(cookie.value)")
    }
}

// Xóa cookie cho domain
if let cookies = HTTPCookieStorage.shared.cookies(for: URL(string: "https://example.com")!) {
    for cookie in cookies {
        HTTPCookieStorage.shared.deleteCookie(cookie)
    }
}

// Xóa tất cả cookie
HTTPCookieStorage.shared.cookies?.forEach { HTTPCookieStorage.shared.deleteCookie($0) }

Cấu hình Cookie Policy (WKWebView)

let configuration = WKWebViewConfiguration()
configuration.websiteDataStore = WKWebsiteDataStore.default() // Persistent
// Hoặc non-persistent (private browsing)
configuration.websiteDataStore = WKWebsiteDataStore.nonPersistent()

let webView = WKWebView(frame: .zero, configuration: configuration)

Đồng bộ cookie giữa native request và WebView

// Share cookie từ URLSession sang WKWebView
let cookies = HTTPCookieStorage.shared.cookies(for: url) ?? []
for cookie in cookies {
    webView.configuration.websiteDataStore.httpCookieStore.setCookie(cookie)
}

Lưu ý

  • UIWebView đã deprecated từ iOS 12, bị xóa iOS 17+. Bắt buộc dùng WKWebView
  • Cookie được chia sẻ giữa Safari và App nếu cùng domain (qua Shared Web Credentials)
  • App Sandbox: Mỗi app có cookie storage riêng, trừ khi dùng App Groups
  • GDPR/Privacy: Cần consent user trước khi track cookie