본문 바로가기
🍎 iOS

[iOS/Swift] WKWebView에서 Scheme과 Query로 web과 communication하기

by 틴디 2022. 9. 26.
728x90
반응형
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
  • navigationAction과 decisionHandler를 가진 이 함수를 구현
return decisionHandler(.allow)
// or
return decisionHandler(.cancel)
  • 특별한 일이 없다면 decisionHandler로 allow를 전달. URL에 의한 화면 이동, 로드를 막으려면 cancel로 전달

URL Scheme 얻어오기

if let url = navigationAction.request.url,
           url.scheme == "{your Scheme!!}" {
           }
           
           // code here!
           return decisionHandler(.cancel)
}
  • navigationAction의 request에서 url을 얻을 수 있음
  • 이때  url의 scheme으로 전달받은 스킴을 조회 할 수 있음
  • 특정 처리를 한다면 cancel로 그렇지 않다면 allow로 decisionHnadler에 값을 전달함

URL Query Item 사용하기

  • 위 navigationAction.request에서 얻어온 url로 queryItems을 조회할 수 있음
            guard let component = URLComponents(string: url.absoluteString) else {
                decisionHandler(.cancel)
                return
            }
  • URL 타입인 url을 absoluteString을 이용해서 String으로 변환한 다음 URLCompoenents의 string 인자로 넘김
let queries = component.queryItems
  • 이때 component로 인자로 받은 URLComponents는 queryItems라는 어레이로 쿼리의 이름과 값이 전달됨
let value = component.queryItems?.first?.value
  • value를 얻고 싶은 경우
let name = component.queryItems?.first?.name
  • name 값을 얻고 싶은 경우

Pexels에서 Miguel Á. Padriñán님의 사진: https://www.pexels.com/ko-kr/photo/1591060/

 

728x90
반응형

댓글