안드로이드에서는
https://onedaycodeing.tistory.com/62
해당 글을 참고 부탁드립니다.
우선 IOS로 웹뷰를 구성하고 웹딴에서 window.open으로 새창을 열면 네이티브에서 코드처리를 해주지않으면 새창이 열리지 않습니다.
안드로이드도 마찬가지였지만 ios도 다를건 없었습니다. (WebView가 코드로 작성됬다는 조건하에 진행하겠습니다)
우선 스토리보드에서
Container View 하나를 화면에 채워주세요.
var WebViewPop: [WKWebView] = [WKWebView]()
기존 웹뷰선언은 그대로 두시고 따로 하나 더 선언해줄게요.
그리고 스토리보드에서 만든 View를 연결해주세여.
@IBOutlet weak var containerView: UIView!
그리고 웹뷰를 셋팅 할때
self.containerView.addSubview(self.webView)
self.webviewPop.append(self.webView)
새창용 웹뷰도 같이 셋팅해줄게요.
self.webView는 기존 쓰는 메인화면을 보여주는 WebView입니다.
그리고 함수 하나를 셋팅해주겠습니다.
func ViewMaker(config: WKWebViewConfiguration) -> WKWebView {
let view = WKWebView(frame: .zero, configuration: config)
view.uiDelegate = self as WKUIDelegate
view.navigationDelegate = self
view.scrollView.delegate = self
return view
}
이 후 extenstion으로 분리시킨 WKUIDelegate를 선언하겠습니다.
extension ViewController: WKUIDelegate {
}
해당 익스텐션 안에
public func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
let webView = self.makeView(config: configuration)
self.containerView.addSubview(webView)
self.WebViewPop.append(webView)
webView.snp.makeConstraints { (make) -> Void in
make.top.equalToSuperview()
make.bottom.equalToSuperview()
make.left.equalToSuperview()
make.right.equalToSuperview()
}
return webView
}
public func webViewDidClose(_ webView: WKWebView) {
webView.removeFromSuperview()
self.WebViewPop.removeLast()
}
해당 함수를 호출해줍니다.
이녀석이 이제 스크립트딴에서 window.open했을때 호출됩니다.
메인 웹뷰는 두고 아까 만든 View와 WebViewPop에 새창을 보여주는겁니다.
메인 뷰 위에 덮어서 보여주는것이므로 메인뷰는 뒤에 살아있습니다.
해당 새창이 닫히면 뒤에 메인뷰가 보여집니다.
이제 닫는걸 해야하는데요.
밑에 코드를 보시면
webViewDidClose 함수가 있습니다.
이녀석이 이제 스크립트에서 window.close했을때 호출됩니다.
이렇게 하이브리드 앱에서 스크립트 window.open과 window.close를 처리해봤습니다.
https://open-infra.tistory.com/ㅎ
추가로
제가 아는분의 블로그입니다.
각종 네트워크 서버 보안쪽에서는 매우 능통하신 분이니 따로 물어보셔도 좋을것같습니다.
ㄱ ㅏ ㄱ 푸시
ㅗ o ㅗ 푸시 :D
'IOS' 카테고리의 다른 글
IOS 앱스토어에 배포해보기(앱 업데이트) (2) | 2020.06.17 |
---|---|
IOS Webview 하이브리드 Alert처리 (0) | 2020.06.08 |
IOS URL스킴 지정 후 웹에서 네이티브 앱 실행 후 네이티브 파라미터까지 받아보자. (0) | 2020.05.29 |
IOS Alamofire를 이용하여 HTTP통신 및 콜백 받아보기 (안드로이드 retrofit2 유사예제) (2) | 2020.05.26 |
IOS Json 파싱 및 인코딩 하기. SwiftyJSON 라이브러리 (0) | 2020.05.22 |
댓글