1. 사용자의 링크 클릭 또는 URL 입력과 같은 유저의 ‘Action으로 시작

    1. 이를 initial request 혹은 navigation start 라고 함.
  2. 이후 서버에서 처리를 마치고 네트워크를 통해 response 를 사용자의 브라우저로 다시 전송

    1. 이를 response start 혹은 first byte 라고 함.
  3. 사용자의 브라우저가 response를 수신하기 시작하고, Document Object Model 또는 DOM 처리를 시작

  4. DOM 로드가 완료되는 시점을 DOM ready 라고 하며, DOM을 사용하여 사용자의 브라우저가 페이지를 렌더링하기 시작

  5. Action / Request - Web Page에 대한 Client의 요청

  6. Response - Server의 응답

decidePolicyFor navigationAction: WKNavigationAction
decidePolicyFor navigationResponse: WKNavigationResponse

iOS에서는 이런 웹 페이지 요청이나, 진행률 추적, 오류 처리 등을 위해 WKNavigationDelegate 메서드를 사용

WKNavigationDelegate 순서

// 1
func webView(WKWebView, decidePolicyFor: WKNavigationAction, 
												preferences: WKWebpagePreferences,
												decisionHandler: (WKNavigationActionPolicy, 
																					WKWebpagePreferences) -> Void)
// 2
func webView(WKWebView, didStartProvisionalNavigation: WKNavigation!)																					
// 3
func webView(WKWebView, decidePolicyFor: WKNavigationResponse, 
												decisionHandler: (WKNavigationResponsePolicy) -> Void)
// 4
func webView(WKWebView, didCommit: WKNavigation!)
//5
func webView(WKWebView, didFinish: WKNavigation!)
  1. decidePolicyFor(WKNavigationAction)
  2. didStartProvisionalNavigation
  3. decidePolicyFor(WKNavigationResponse)