버그 잡이

WebView 내에서 url 이동을 관찰하는 방법 #Swift #WKWebview 본문

Swift

WebView 내에서 url 이동을 관찰하는 방법 #Swift #WKWebview

버그잡이 2021. 11. 30. 19:51

 

이번에 웹앱을 만들었습니다. 네이티브에서는 웹뷰로 url 을 띄워주는 기능만 있습니다.

 

화면이 present 되고 탭이 선택되는 등의 액션은 모두 웹에서 url 이동을 통해서 이루어집니다.

 

그런데, 요구사항으로 특정 url에서는 swipe로 navigation 되는 기능을 빼달라는 요청이 들어왔습니다.

 

이를 위해서는 웹뷰 내에서 url 이동을 트랙킹 할 수 있어야 합니다.

 

 

 

해결 방법

 

1. webView의 URL 을 관찰할 수 있는 observer를 추가합니다

self.webView.addObserver(self, forKeyPath: "URL", options: .new, context: nil)

 

2. obserValue 메서드를 오버라이드 해서 url을 받아봅니다.

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == #keyPath(WKWebView.url) {
            guard let url = self.webView.url?.absoluteString else {
                return
            }
   
	    print(url)

        }
    }

 

위 처럼 코드를 추가하면 url이 변경될때마다 url이 print 되는 것을 확인할 수 있습니다.

 

 

반응형
Comments