투케이2K

628. (ios/swift5) [간단 소스] IOS Webview 웹뷰 window open 새창 열기 이벤트 발생 시 Alert 팝업창 표시 및 외부 링크 이동 수행 본문

IOS

628. (ios/swift5) [간단 소스] IOS Webview 웹뷰 window open 새창 열기 이벤트 발생 시 Alert 팝업창 표시 및 외부 링크 이동 수행

투케이2K 2025. 1. 26. 12:40

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

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

- 언어 : Swift5

- 개발 툴 : Xcode

- 기술 구분 : Webview / Window Open / Alert

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






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

// ----------------------------------------------------
// MARK: - [웹뷰에서 window open 이벤트 감지]
// ----------------------------------------------------
// 필요 설정 : WKUIDelegate / webView.uiDelegate = self
// ----------------------------------------------------
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {

    // -----------------------------------------
    // [url 주소 확인 실시]
    // -----------------------------------------
    let _urlString = String(describing: navigationAction.request.url?.absoluteString ?? "")
    // -----------------------------------------
    
    
    // -----------------------------------------
    // [로그 출력]
    // -----------------------------------------
    S_Log._F_(description: "웹뷰 [window open] 새창 열기 이벤트 확인", data: [ "URL :: \(_urlString)" ])
    // -----------------------------------------
    
    
    // -----------------------------------------
    // [url 링크 값 체크 수행 실시] >> [외부 링크 이동 실시]
    // -----------------------------------------
    if _urlString != nil
        && _urlString.count > 0
        && _urlString.hasPrefix("http") == true {
        
        // [외부 브라우저 링크 이동 실시]
        //self.goSafariBrowserOuter(_url: _urlString)
        
        
        // [Alert 팝업창 표시]
        self.observableAlert(title: "알 림 (Window Open)", message:"\n" + _urlString + " 주소 이동 이벤트가 감지 되었습니다. 외부 링크 이동 하시겠습니까?" + "\n", okBtn:"이동", noBtn: "취소"){(result) in
            
            if result == true {
                
                // [외부 브라우저 링크 이동 실시]
                self.goSafariBrowserOuter(_url: _urlString)
                
            }
            
        }
        
    }
    return nil
    // -----------------------------------------
}

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





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

[안드로이드 ( android ) 웹뷰 window open 새창 열기 이벤트 발생 시 Alert 팝업창 표시, 외부링크 이동 개선 요청]

https://blog.naver.com/kkh0977/223738898023

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

[결과 출력]

 
 
 



반응형
Comments