반응형
저번 포스팅에서 android에서 자바스크립트 alert 함수와 confirm 함수에 반응하는 방법을 포스팅했었습니다
오늘은 이어서 iOS에서도 똑같이 위 함수에 반응하도록 해보겠습니다 !
class MainWebView : UIViewController, WKNavigationDelegate, WKScriptMessageHandler, WKUIDelegate{
@IBOutlet var webView: WKWebView!
먼저 WebView class에 WKScriptMessageHandler 프로토콜을 채택합시다
WKScriptMessageHandler 는 웹페이지에서 실행되는 javascript code에서 메세지를 수신하기 위한 인터페이스입니다
func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {
let alertController = UIAlertController(title: self.localizing(key: "알림", language: self.languageBundle), message: message, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: localizing(key: "확인", language: languageBundle), style: .cancel) { _ in
completionHandler()
}
alertController.addAction(cancelAction)
DispatchQueue.main.async {
self.present(alertController, animated: true, completion: nil)
}
}
🐥 Alert 메세지를 수신받기 위한 함수입니다.
func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
let alertController = UIAlertController(title: self.localizing(key: "알림", language: self.languageBundle), message: message, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: localizing(key: "취소", language: languageBundle), style: .cancel) { _ in
completionHandler(false)
}
let okAction = UIAlertAction(title: localizing(key: "확인", language: languageBundle), style: .default) { _ in
completionHandler(true)
}
alertController.addAction(cancelAction)
alertController.addAction(okAction)
DispatchQueue.main.async {
self.present(alertController, animated: true, completion: nil)
}
}
🐥 Confirm 메세지를 수신받기 위한 함수입니다.
마무리하여
WKwebView 는 native 코드와 javascript 코드 간의 양방향 통신을 지원합니다.
이후에 양방향 통신이 어떻게 이루어지는지에 대해 포스팅을 하겠습니다!
반응형
'개발노트 > iOS' 카테고리의 다른 글
[iOS] UILabel에 padding 주기 (0) | 2023.02.22 |
---|---|
SWIFT : 특정 뷰 화면 전환하기 - 세로모드 예제(orientation : portrait) (0) | 2023.02.20 |
iOS & Android : 프로젝트에 폰트 추가 및 설정 (0) | 2023.02.20 |
[SWIFT] Custom Alert 사용하기 (0) | 2023.02.19 |
[Swift]JavaScript < ㅡ > Native 통신 (0) | 2023.02.17 |
댓글