Develop
2014.01.16 14:30

[ios] UIWebView 쿠키 유지

Views 11706 Votes 0 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
애플리케이션에서 UIWebView를 사용할 때 쿠키를 저장했다가 복원하는 방법~
쿠키를 저장하면 애플리케이션이 종료되더라도 로그인 상태 등을 유지할 수 있다.
서버가 특별히 쿠키의 지속 시간을 지정하지 않은 경우 쿠키는 애플리케이션이 종료되면 쿠키 정보는 사라진다.
(백그라운드에 남아있는 것과는 다르다)
UIWebView can save and restore cookies. Although application has terminated, the cookies and the session can be restored.

애플리케이션 종료시 쿠키 저장
우선 애플리케이션이 종료되는 이벤트를 잡아야 한다.
현재 멀티태스킹이 지원되는 SDK를 사용하여 애플리케이션을 만든 경우 Application Delegate의 아래 메소드가 호출된다.
- (void)applicationDidEnterBackground:(UIApplication *)application

멀티태스킹이 지원되기 이전 버전의 SDK나 멀티태스킹을 사용하지 않도록 설정한 애플리케이션은 다음고 같은 메소드에서 종료 이벤트를 잡을 수 있다.
- (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");
}

?

List of Articles
No. Category Subject Author Date Views
645 Develop [c] kmp 활용 search file hooni 2013.04.23 7418
644 Develop [c++] mfc 기반 레지스트리(registry) 컨트롤 예제 코드 2 hooni 2013.04.23 15332
643 Develop [c++] mfc 기반 멀티수납(wall)시스템 소스와 실행파일 file hooni 2013.04.23 7054
642 Develop 다운 받아서 테스트 해볼것.. hooni 2013.04.23 9141
641 Develop [c++] mfc로 만든 현재 디렉토리 읽어오기/세팅하기 (GetCurrentDirectory/SetCurrentDirectory) file hooni 2013.04.23 8467
640 Develop [c#] BFilter 툴바 소스 코드 ㅎㅎ file hooni 2013.04.23 7608
639 Develop [c#] MS IE(Internet Explorer) 툴바 버튼 예제 2003/2005 두가지 버전 secret hooni 2013.04.23 2090
638 Develop [c] 네트워크 트래릭 모니터링.. 졸업작품.. 2 file hooni 2013.04.23 11049
637 Develop [c] 텍스트 파일(로그)을 정해진 라인 단위로 쪼개주는 코드 file hooni 2013.04.23 7048
636 Develop [c#] mfc 기반의 웹서비스 서버/클라이언트 샘플과 예제 소스 secret hooni 2013.04.23 2073
635 Develop [c++] Win32API를 이용한 ExitWindowsEx 사용한 예제코드 hooni 2013.04.23 7961
634 Develop [c#] BHO 한샘툴바랑 동현툴바.. secret hooni 2013.04.23 2208
633 Develop [c] 가변인자 함수(printf와 같은..) hooni 2013.04.23 7177
632 System/OS [linux] 한글 URL 인식할 수 있게 아파치(Apache) 설정 (mod_url.c 설치) hooni 2013.04.23 13064
631 Develop [c] openssl 샘플코드.. 어려움 ㅠㅠ file hooni 2013.04.23 7024
630 Develop [c] 바로 보고 정리할 것.. ㅋㄷㅋㄷ file hooni 2013.04.23 7135
Board Pagination Prev 1 ... 32 33 34 35 36 ... 74 Next
/ 74