티스토리 뷰
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
'iOS Programming' 카테고리의 다른 글
[iOS] PhotoKit을 이용한 사진첩에서 사진 선택 시 앱 크래쉬 문제 (13) | 2023.05.15 |
---|---|
[iOS] 카카오톡 공유하기 메시지 보내기 (0) | 2023.05.13 |
[iOS] GCD (Grand Central Dispatch) (0) | 2023.02.13 |
[iOS] Delegate Pattern (0) | 2023.02.12 |
Executable Not Found. ~~~ is not a valid path to an executable file 에러 해결 (0) | 2022.01.09 |
- Total
- Today
- Yesterday
- WKUIDelegate
- OS
- 프로세스
- PHImageRequestOptions
- rxcocoa
- sharedmemory
- cs
- 쓰레드
- 스냅킷
- swiftsoup
- 운영체제
- 개발대외활동
- 멀티프로세스
- isNetworkAccessAllowed
- URLComponents
- 부캠
- RxSwift
- 디프만
- returnKey
- 프로세스간통신
- Xcode
- setBackgroundColor
- Swift
- PHAsset
- 스레드
- optional
- ios
- 슈퍼스칼라
- webcrawl
- 개발동아리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |