[ios] UIWebView 쿠키 유지
- (void)applicationDidEnterBackground:(UIApplication *)application
- (void)applicationWillTerminate:(UIApplication *)application
쿠키 정보를 저장할 때 UIWebView 인스턴스는 필요 없다.
[NSHTTPCookieStorage sharedHTTPCookieStorage] 메소드를 호출하면 애플리케이션에게 할당된 쿠키 저장소를 반환받는다.
즉 시스템 브라우저인 Safari나 다른 애플리케이션과 공유하지 않는 애플리케이션만의 쿠키 저장소이다.
(iOS는 쿠키를 공유하지 않지만 Mac OS는 쿠키를 공유한다)
{ 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의 메소드에서 처리한다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
쿠키를 다시 되살리는 방법은 저장하는 순서의 반대로 한다.
키 값을 MySavedCookies로 하여 NSUserDefaults로부터 데이터를 꺼내오고 배열로 만든 후 하나씩 다시 쿠키 저장소에 저장한다.
{ 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"); }
-
[ios] URL Scheme 이용하여 앱 설치 확인
-
[ios] UI컨트롤러 샘플코드
-
[ios] UIWebView에서 로컬에 있는 html 파일 불러오기
-
[ios] UIWebView에서 NSURLRequest에 Cookie 실어 보내기
-
[ios] UIWebView를 이용한 로컬 HTML 파일 표시
-
[ios] UIWebView 쿠키 유지
-
[ios] UIWebView 캐쉬 삭제
-
[ios] UIView에서 상위 UIViewController 가져오기
-
[ios] UITableView 특정 Row만 Update
-
[ios] UILabel top alignㅎㅎ
-
[ios] UIColor 지정에서 RGB define ㅎㅎ
-
[ios] UIButton multi-line iOS7