투케이2K

602. (ios/swift5) [간단 소스] WKNavigationDelegate 간단 설명 및 사용 옵션 정리 본문

IOS

602. (ios/swift5) [간단 소스] WKNavigationDelegate 간단 설명 및 사용 옵션 정리

투케이2K 2024. 12. 2. 19:03

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Swift


- 개발 툴 : Xcode


- 기술 구분 : WKNavigationDelegate / 딜리게이트 / 웹뷰

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------

1. WKNavigationDelegate 은 웹뷰의 메인 프레임에서 탐색 변경 사항을 수락하거나 거부하고, 탐색 요청의 진행 상황을 추적하는 딜리게이트 대리자 입니다


2. WKNavigationDelegate 은 콘텐츠 내의 특정 링크에서 탐색을 제한할 수 있으며, 요청 진행 상황을 추적하고 오류 및 인증 문제에 응답하는 데 사용할 수도 있습니다


3. WKNavigationDelegate 사용 가능 및 지원 버전 : 

  >> 아이폰 OS
  >> 아이패드OS
  >> 맥 카탈리스트
  >> 맥 OS
  >> 비전OS


4. WKNavigationDelegate 탐색 요청 허용 또는 거부 관련 : 

  >> func webView(WKWebView, decidePolicyFor: WKNavigationAction, preferences: WKWebpagePreferences, decisionHandler: (WKNavigationActionPolicy, WKWebpagePreferences) -> Void) : 지정된 기본 설정 및 작업 정보에 따라 새 콘텐츠로 이동할 수 있는 권한을 대리인에게 요청합니다.
  >> func webView(WKWebView, decidePolicyFor: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) : 지정된 작업 정보를 기반으로 새 콘텐츠로 이동할 수 있는 권한을 대리인에게 요청합니다.
  >> enum WKNavigationActionPolicy : 작업에서 웹 페이지 탐색을 허용할지 취소할지 여부를 나타내는 상수입니다.
  >> func webView(WKWebView, decidePolicyFor: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) : 탐색 요청에 대한 응답이 알려진 후, 대리인에게 새 콘텐츠로 이동할 수 있는 권한을 요청합니다.
  >> enum WKNavigationResponsePolicy : 응답에서 웹 페이지 탐색을 허용할지 취소할지 여부를 나타내는 상수입니다.


5. WKNavigationDelegate 요청의 로드 진행 상황 추적 관련 : 

  >> func webView(WKWebView, didStartProvisionalNavigation: WKNavigation!) : 메인 프레임에서 탐색이 시작되었음을 대리자에게 알립니다.
  >> func webView(WKWebView, didReceiveServerRedirectForProvisionalNavigation: WKNavigation!) : 대리자에게 웹 뷰가 요청에 대한 서버 리디렉션을 받았음을 알립니다.
  >> func webView(WKWebView, didCommit: WKNavigation!) : 딜리게이트에게 웹 뷰가 메인 프레임에 대한 콘텐츠를 수신하기 시작했음을 알립니다.
  >> func webView(WKWebView, didFinish: WKNavigation!) : 대리인에게 탐색이 완료되었음을 알립니다.


6. WKNavigationDelegate 인증 문제 대응 관련 : 

  >> func webView(WKWebView, didReceive: URLAuthenticationChallenge, completionHandler: (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) : 대리인에게 인증 문제에 응답하도록 요청합니다.
  >> func webView(WKWebView, authenticationChallenge: URLAuthenticationChallenge, shouldAllowDeprecatedTLS: (Bool) -> Void) : TLS 의 더 이상 사용되지 않는 버전을 사용하는 연결을 계속할지 여부를 대리자에게 묻습니다.


7. WKNavigationDelegate 탐색 오류에 대한 대응 관련 : 

  >> func webView(WKWebView, didFail: WKNavigation!, withError: any Error) : 탐색 중에 오류가 발생했음을 대리인에게 알립니다.
  >> func webView(WKWebView, didFailProvisionalNavigation: WKNavigation!, withError: any Error) : 대리인에게 초기 탐색 과정에서 오류가 발생했음을 알립니다.
  >> func webViewWebContentProcessDidTerminate(WKWebView) : 대리자에게 웹 뷰의 콘텐츠 프로세스가 종료되었음을 알립니다.


8. WKNavigationDelegate 다운로드 진행 상황 처리 관련 : 

  >> func webView(WKWebView, navigationResponse: WKNavigationResponse, didBecome: WKDownload) : 대리인에게 탐색 응답이 다운로드로 바뀌었음을 알립니다.
  >> func webView(WKWebView, navigationAction: WKNavigationAction, didBecome: WKDownload) : 대리인에게 탐색 동작이 다운로드로 바뀌었음을 알립니다.


9. 추가 참조 관련 : 

  >> class WKBackForwardList : 이전에 로드된 웹 페이지 목록을 관리하는 객체로, 웹 뷰가 앞뒤 탐색에 사용합니다.
  >> class WKBackForwardListItem : 웹 뷰가 이전에 방문했던 웹 페이지의 표현입니다.
  >> class WKNavigation : 웹페이지의 로딩 진행 상황을 추적하는 객체입니다.
  >> class WKNavigationAction : 탐색을 발생시키는 동작에 대한 정보를 담고 있는 객체입니다.
  >> class WKNavigationResponse : 탐색 요청에 대한 응답을 포함하고 있는 객체이며, 탐색 관련 정책 결정을 내리는 데 사용됩니다.

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

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

https://blog.naver.com/kkh0977/222686770495?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments