This is da(大) SWIFT

옆집 스위프트: 웹뷰 에러코드 처리

옆집개 2024. 7. 2. 09:02

우리 회사 앱은 타사와 마찬가지로 웹앱이 베이스이다.

 

웹이 오류(Error 404 등)를 나타내면 속수무책으로 당하기만 해서는 안된다. 그래서 쓰는 에러 처리 코드이다.

쿠키 로드에 실패했을때 사용하는 에러처리 코드입다.

 

웹뷰 에러 처리 코드:

    func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse,
                 decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {

        if let response = navigationResponse.response as? HTTPURLResponse {
            print("webviw response status code: \(response.statusCode)")
            
            switch response.statusCode {
            case (200...299):
                print("Note: cookie load success")
            case (300...399):
                print("Note: cookie load redirection")
            case (400...499):
                print("Error: clientError code 400...499")
                ViewController().showNetworkErrorPage()
            case (500...599):
                print("Error: serverError code 500...599")
                ViewController().showNetworkErrorPage()
            default:
                print("unknown")
            }
        }
        
        decisionHandler(.allow)
    }

 

 

보다시피 200번대는 불러오기 성공, 300번대는 리로드, 400번대, 500번대는 에러를 표시한다. 그래서 콘솔에 에러를 표시하고 페이지를 리로드할수있는 에러페이지로 이동하게 해놨다.

 

대리자 메소드 statusCode는 웹뷰 response가 오고 다시한번 탐색한다. 

혹시나 decidePolicyFor navigationAction(navigationResponse랑 다름주의)에서 탐색을 거부했다면 이 대리자까지 오지 않으니 주의하자.