[ios] UIWebView 쿠키 유지
1 | - ( void )applicationDidEnterBackground:( UIApplication *)application |
1 | - ( void )applicationWillTerminate:( UIApplication *)application |
쿠키 정보를 저장할 때 UIWebView 인스턴스는 필요 없다.
[NSHTTPCookieStorage sharedHTTPCookieStorage] 메소드를 호출하면 애플리케이션에게 할당된 쿠키 저장소를 반환받는다.
즉 시스템 브라우저인 Safari나 다른 애플리케이션과 공유하지 않는 애플리케이션만의 쿠키 저장소이다.
(iOS는 쿠키를 공유하지 않지만 Mac OS는 쿠키를 공유한다)
1 2 3 4 5 6 7 8 9 10 11 12 13 | { NSLog (@ "%@" , @ "PersisteWebCookie" ); NSArray *cookies = [[ NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; NSData *cookieData = [ NSKeyedArchiver archivedDataWithRootObject:cookies]; [[ NSUserDefaults standardUserDefaults] setObject:cookieData forKey:@ "MySavedCookies" ]; NSLog (@ "%@" , @ "PersisteWebCookie Saved" ); } |
저장소에 현재 저장된 쿠키를 배열로(NSArray) 받아와서 NSUserDefaults에 저장할 수 있도록 NSKeyedArchiver를 통해 NSData 인스턴스로 변환한다.
키 값은 MySavedCookies를 사용하여 NSUserDefaults에 저장해둔다.
일반적으로 쿠키는 브라우저나 애플리케이션이 종료되면(iOS의 경우 홈버튼을 더블탭 하여 마이너스 아이콘으로 종료시키면) 쿠키 정보가 삭제된다.
하지만 위와 같이 저장한 쿠키 정보는 애플리케이션을 다시 실행시켰을 때 복구할 수 있다.
애플리케이션으로 돌아왔을 때
애플리케이션이 백그라운드에서 돌아오거나 다시 실행되는 이벤트는 보통 다음 Application Delegate의 메소드에서 처리한다.
1 2 | - ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions |
쿠키를 다시 되살리는 방법은 저장하는 순서의 반대로 한다.
키 값을 MySavedCookies로 하여 NSUserDefaults로부터 데이터를 꺼내오고 배열로 만든 후 하나씩 다시 쿠키 저장소에 저장한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | { NSLog (@ "%@" , @ "PersisteWebCookie" ); NSData *cookiesdata = [[ NSUserDefaults standardUserDefaults] objectForKey:@ "MySavedCookies" ]; if ([cookiesdata length]) { NSArray *cookies = [ NSKeyedUnarchiver unarchiveObjectWithData:cookiesdata]; NSHTTPCookie *cookie; for (cookie in cookies) { [[ NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; } } NSLog (@ "%@" , @ "PersisteWebCookie Restored" ); } |
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
337 | Develop | [php] substr() 한글 자를 때 깨짐 방지 | hooni | 2014.01.09 | 21012 |
» | Develop | [ios] UIWebView 쿠키 유지 | hooni | 2014.01.16 | 12076 |
335 | Develop | [ios] UIWebView에서 NSURLRequest에 Cookie 실어 보내기 | hooni | 2014.01.16 | 15676 |
334 | System/OS | [linux] CentOS 6.x Cati 설치 (yum) | hooni | 2014.01.17 | 49307 |
333 | Develop |
[js] 주소표시줄 URL 읽어오기 (변경까지)
![]() |
hooni | 2014.01.21 | 1 |
332 | Develop |
[ios] 네트워크 인디케이터(NetworkActivityIndicator) 작동
![]() |
hooni | 2014.01.24 | 12967 |
331 | Develop |
[ios] iOS 6.0 이상 회전 하기 (이전 버전과 비교 변경 부분)
![]() |
hooni | 2014.01.27 | 36112 |
330 | Develop | [ios] NSString 간단한 정규식 사용법 | hooni | 2014.01.28 | 18840 |
329 | Develop | [c] 64bit 머신에서 inet_ntoa() 사용시 Segment fault 대처 방법법 | hooni | 2014.02.08 | 15811 |
328 | Develop | [php] XE 관리자 IP대역 설정 오류 해결법 | hooni | 2014.02.10 | 11251 |
327 | Database | [sql] 쿼리로 문자열 검색해서 일괄 치환하기 | hooni | 2014.02.13 | 10694 |
326 | Develop | [html] SVG(Scalable Vector Graphics) 간단 정리 | hooni | 2014.02.13 | 9921 |