iOS WKWebView를 이용하여 swift 에서 javaScript 함수를 호출해 봅시다.
해당 글에서 코드 부분은 파란색으로 표기 됩니다.
해당 글에서 중요 부분은 붉은색으로 표기 됩니다.
1. "Swift iOS WKWebView : 기본 연동 (코드 부분)" 코드를 작성 한 후 붉은 부분을 추가 합니다.
[MainViewController.swift 파일 안]
// * WKWebView를 사용하기 위해서는 WebKit 모듈을 import 시켜야 합니다.
import WebKit
class MainViewController: UIViewController {
// * WKWebView 객체 선언
private var wkWebView: WKWebView? = nil
override func viewDidLoad() {
super.viewDidLoad()
// * WKWebView 구성
// - 여기서는 self.view 화면 전체를 WKWebView로 구성하였습니다.
self.wkWebView = WKWebView.init(frame: CGRect.init(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
// * WKWebView 화면 비율 맞춤 설정
self.wkWebView?.autoresizingMask = UIViewAutoresizing(rawValue: UIViewAutoresizing.RawValue(UInt8(UIViewAutoresizing.flexibleWidth.rawValue) | UInt8(UIViewAutoresizing.flexibleHeight.rawValue)))
// * WKWebView 여백 및 배경 부분 색 투명하게 변경
self.wkWebView?.backgroundColor = UIColor.clear
self.wkWebView?.isOpaque = false
self.wkWebView?.loadHTMLString("<body style=\"background-color: transparent\">", baseURL: nil)
// * WKWebView에 로딩할 URL 전달
// - 캐시 기본 정책 사용, 타임아웃은 10초로 지정하였습니다.
let request: URLRequest = URLRequest.init(url: NSURL.init(string: "<URL 입력>")! as URL, cachePolicy: URLRequest.CachePolicy.useProtocolCachePolicy, timeoutInterval: 10)
self.wkWebView?.load(request)
// * WKWebView 화면에 표시
self.view?.addSubview(self.wkWebView!)
// * JavaScript 함수 호출 부분 : 인자가 없을 경우
// - 호출 함수 이름 : javaScriptFunc 일때
self.wkWebView?.evaluateJavaScript("javaScriptFunc();", completionHandler: { result, error in
// * error 값이 존재 할 경우 error message 표시
if let anError = error {
print("* evaluateJavaScript infoUpdate Error \(anError.localizedDescription)")
}
print("* evaluateJavaScript infoUpdate Result \(result ?? "")")
})
// * JavaScript 함수 호출 부분 : 인자가 있는 경우
// - 호출 함수 이름 : javaScriptFunc 일때
// - 참고 : swift에서 String 문장 사이 변수를 넣고자 할때 \(<변수명>) 이렇게 사용한다.
let A = "인자1"
let B = "인자2"
self.wkWebView?.evaluateJavaScript("javaScriptFunc('\(A)', '\(B)');", completionHandler: { result, error in
if let anError = error {
print("* evaluateJavaScript infoUpdate Error \(anError.localizedDescription)")
}
print("* evaluateJavaScript infoUpdate Result \(result ?? "")")
})
}
}
'개발' 카테고리의 다른 글
Swift iOS WKWebView : Progress URL 로딩 퍼센트 사용하기 (코드 부분) (0) | 2020.09.22 |
---|---|
Swift iOS WKWebView : JavaScript -> Swift 함수 호출하기 Use WKWebViewConfiguration (코드 부분) (0) | 2020.09.22 |
Swift iOS WKWebView : WKUIDelegate 사용설정 (코드 부분) (0) | 2020.09.22 |
Swift iOS WKWebView : WKNavigationDelegate 사용설정 (코드 부분) (0) | 2020.09.22 |
Swift iOS WKWebView : 3D Touch 비활성화 시키기 (코드 부분) (0) | 2020.09.22 |