목차
- 배경
- 구현
1. 배경
앱을 사용 중이거나, 홈 버튼을 눌러 잠시 내려두면 쿠키가 유지되었지만,
앱을 종료하면 저장된 쿠키가 모두 지워지는 현상이 있어서 앱을 수정하게 되었다.
특히, 앱을 종료한 직후엔 쿠키가 유지되었지만..
다른 앱을 열어 아이폰의 메모리를 사용하게 되면 쿠키가 지워진다는 걸 알았다.
로그인 유지에 쿠키 인증값을 사용하기 때문에 쿠키를 유지하는 방법을 찾게 되었다.
2. 구현
개인적으로 생각한 구현 프로세스는 아래와 같다.
Step 1. 앱이 Background 상태가 되면 쿠키를 UserDefaults에 저장해둔다.
var result = [Any]()
WKWebsiteDataStore.default().httpCookieStore.getAllCookies { (cookies) in
for cookie in cookies {
var properties = [HTTPCookiePropertyKey : Any]()
properties[.name] = cookie.name
properties[.value] = cookie.value
properties[.domain] = cookie.domain
properties[.path] = cookie.path
properties[.version] = cookie.version
if let date = cookie.expiresDate {
properties[.expires] = date
}
result.append(properties)
}
UserDefaults.standard.setValue(result, forKey: "cookies")
}
Step 2. 앱이 Foreground로 돌아왔을 때, UserDefaults에서 쿠키를 꺼내어 이어서 사용한다.
if let cookies = UserDefaults.standard.value(forKey: "cookies") as? [[HTTPCookiePropertyKey : Any]] {
for cookie in cookies {
if let httpCookie = HTTPCookie(properties: cookie) {
HTTPCookieStorage.shared.setCookie(httpCookie)
}
}
}
위와 같이 코드를 추가해서 쿠키를 계속 유지시킬 수 있었다.
'iOS > Swift' 카테고리의 다른 글
CocoaPods 설치 및 설정 (0) | 2023.10.14 |
---|---|
[Swift] 앱의 화면 회전 제어 (2) | 2021.09.30 |
[Swift] Status Bar / Home Indicator의 색상 변경 (0) | 2021.09.15 |
[Xcode] m1 맥에서 시뮬레이터 빌드 오류 (1) | 2021.09.15 |
[Swift] 네트워크 연결 상태 확인 (0) | 2021.09.08 |