적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift

[Swift iOS] WKWebView url 변경 감지

hongssup_ 2021. 9. 23. 09:40
반응형

하이브리드 앱에서 웹뷰 사용시, 새로운 페이지가 로딩될 때마다 이를 감지하고 변경된 url을 받아오는 법을 알아보자. 

 

url 변경을 감지하기 위해서는 다음 두가지 방법을 사용할 수 있다.  

1. webView:decidePolicyForNavigationAction:decisionHandler:에서 navigationAction으로 받아오는 법

2. webView에 observer를 통해 url로 들어오는 값을 살펴보는 법. 

 

첫번째가 좀 더 간단하고 쉬워보여 첫번째 navigationAction으로 받아오는 법을 사용해보았다. 

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    let urlString = navigationAction.request.url?.absoluteString ?? ""
    decisionHandler(.allow)
}

다음과 같이 didReceiveServerRedirectForProvisionalNavigation을 사용하는 방법도 있다고 한다. 

func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {
    if let url = webView.url?.absoluteString{
        print("url = \(url)")
    }
}

 

 

참고 : StackOverflow - How to observe url redirection in wkwebview in iOS,

728x90
반응형