현재 관리하는 앱이 iOS12 beta 에서 웹뷰가 사라지는 문제가 발생.

UIWebView deprecate 이슈를 알고 있어서 올 것이 왔나 라는 생각이었는데 아니었다.

UIWebView loadRequest 의 response code 를 확인하는 부분에서 문제가 있었다.


UIWebView 에서 Http Response 확인하기.


NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)[[NSURLCache sharedURLCache] cachedResponseForRequest:webview.request].response;
NSInteger statusCode = httpResponse.statusCode;

위와 같은 코드로 UIWebView loadRequest 에 대한 Response 정보를 얻을 수 있다.



- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)[[NSURLCache sharedURLCache] cachedResponseForRequest:webview.request].response;
    NSInteger statusCode = httpResponse.statusCode;
}

웹뷰에서 도큐먼트 로드가 끝나는 시점에 위의 코드를 호출하여 응답처리를 합니다. (webViewDidFinishLoad 델리게이트는 onload Event 와 유사하다. images, scripts, css 모두 로드된 후에 호출된다.)


문제는 iOS12 beta 에서 정상동작하지 않는다. (nil 이 반환됨)


Deployment target 이 iOS12 미만인 경우 UIWebView가 포함된 앱은 정상동작하는 것 같지만

UIWebView 와 관련된 Foundation 클래스의 상호작용은 보장되지 않는 것 같다.

정말로 어떻게 될지는 GM 버전까지 기다려봐야 알 것 같고... 

그 때가서 다시 글을 수정하도록 해야겠다.




+ Recent posts