티스토리 뷰

iOS Programming

[iOS] WKNavigationDelegate

dev-Jun 2023. 5. 14. 15:10

WKNavigationDelegate

WKNavigationDelegate 함수를 이용하여 웹 페이지 탐색을 수락하거나 거절하고, 웹 페이지 요청의 과정을 추적한다고 합니다.

WKNavigationDelegate 함수들을 하나씩 알아보겠습니다.

 

1) decidePolicyFor

이 메서드는 WKWebview에서 새로운 페이지를 로드하기 전에 해당 페이지 요청에 대한 네비게이션 정책을 결정합니다.

이 메서드를 사용하여 링크가 클릭되었을 때 페이지를 로드하기 전에 해당 링크가 안전한 도메인에서 온 것인지,

악성 스크립트를 실행하거나 불법적인 컨텐츠를 제공하는지 여부를 확인할 수 있습니다.

  • webView: 이 메서드가 호출된 웹 뷰입니다.
  • navigationAction: 네비게이션 요청에 대한 정보를 제공합니다.
    • navigationAction.navigationType → 속성을 통해 페이지 요청 유형을 확인
    • navigationAction.request.url → 속성을 사용하여 요청된 URL을 확인
  • decisionHandler: 이 페이지 요청에 대한 네비게이션을 허용할지 또는 거부할지 결정합니다.

 

WKNavigationAction

네비게이션 요청에 대한 정보를 제공합니다.

어떤 URL을 요청했는지, 요청 방법 (ex: GET, POST), 요청한 페이지가 새 창에서 열렸는지, 페이지를 다운로드하는 것인지 등을 알려줍니다.

이 정보를 기반으로 앱에서 적절한 작업을 수행할 수 있습니다.

 

WKNavigationActionPolicy

  • cancel : 취소
  • allow : 허용

 

2) didStartProvisionalNavigation

이 메서드는 WKWebView가 탐색을 시작하고 컨텐츠를 load 하기 시작했을 때 호출됩니다.

웹뷰가 페이지를 로드하기 시작했음을 알리기 때문에, 이를 활용해 로딩 인디케이터를 보여주거나, 네비게이션 바에 주소를 업데이트하는 등의 작업을 수행할 수 있습니다.

 

3) didReceiveServerRedirectForProvisionalNavigation

이 메서드는 WKWebView가 요청에 의해 서버 리디렉션 되었을 때, 호출됩니다.

리디렉션된 페이지의 URL을 확인하여 해당 페이지로 다시 로드하거나, 캐시 된 페이지를 업데이트하는 등의 작업을 수행할 수 있습니다.

 

4) didCommit

이 메서드는 WKWebView가 컨텐츠를 수신하기 시작했을 때 호출되며 didStartProvisionalNavigation 다음으로 호출됩니다.

 

5) didFinish

이 메서드는 WKWebView가 페이지 로드를 완료했을 때 호출됩니다.

사용자는 페이지의 모든 내용을 볼 수 있게 되고 이 시점에서 웹뷰는 더 이상의 네트워크 활동이나 리소스 다운로드를 수행하지 않습니다.

로딩 인디케이터를 삭제하거나 로드된 페이지에서 필요한 작업을 수행할 수도 있습니다.

 

6) didFail

이 메서드는 WKWebView가 페이지 로드를 실패했을 때 호출됩니다.

Error 객체를 통해 어떤 에러가 발생했는 지 확인하고, 사용자에게 적절한 알림을 제공할 수 있습니다.

 

참고

https://developer.apple.com/documentation/webkit/wknavigationdelegate

https://boidevelop.tistory.com/97

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함