창을 띄우고 한참 있다 웹에서 작업을 다시 시작 하면
세션정보를 잃어 버리는 상황이 발생한다.
이를테면
댓글입력 웹창에서 댓글들을 계속 보다가~~~~~~~ 보다가 ~~ 댓글을 입력 하면 일정시간이 지나 url에 넣었던 정보를 잃어 버릴때가 있다.
그래서 직접 헤더로 정보를 넣는식으로 바꾸기로했다.
방법은
우선 UIWebViewDelegate를 이용
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
인스턴스 메서드 안에서 한다.
웹 로드를 하면 이 메서드가 호출이 된다.
그때
NSURL *url = [request mainDocumentURL]; if([[request allHTTPHeaderFields] objectForKey:@"헤더 이름"]!=nil) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ dispatch_async(dispatch_get_main_queue(), ^{ NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; // set the new headers [request addValue:[NSString stringWithFormat:@"각종 정보=%@",정보] forHTTPHeaderField:@"헤더 이름"]; // reload the request [_resultWebView loadRequest:request]; }); }); return NO; } return true;
1. 현재 리퀘스트 되는 mainDocumentURL을 가져온다 그냥 url을 가져 오면 기본 url안의 세부 url까지 가져오기때문에 mainDocumentURL로 한다.
2. 만약 이 리퀘스트에 내가 지정할 헤더 이름이 있는지 없는지 판단
있다면 끝내고
없다면
8. 해당 리퀘스트에 헤더정보를 넣고
9. 이 리퀘스트를 다시 로드 한다.
이렇게 되면 헤더정보가 입력된 url이 다시 불러오게 되어 나중에 시간이 지나더라도 정보를 유실 하지않고 사용이 가능하다.
'IT > iOS' 카테고리의 다른 글
crittercism 에 dsYM을 추가해보자 (0) | 2014.04.18 |
---|---|
UIWebView 웹페이지의 넓이제한주기 (0) | 2014.04.18 |
UIWebView의 로드된 웹페이지에 JavaScript 소스 넣기 또는 수정, 삭제 하기(target:'_blank') (0) | 2014.04.18 |
UIWebView bounce 비활성화 하기 (0) | 2014.04.18 |
custom TableView Cell Button selector (0) | 2014.04.18 |