Notice
Recent Posts
Recent Comments
Link
투케이2K
55. (ios/swift) ios 및 자바스크립트 웹뷰 통신 (간략 정리) 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
===============================
// [자바스크립트 >> iOS 함수 호출]
===============================
// [일반 함수 호출 : system]
window.webkit.messageHandlers.system.postMessage('');
// [데이터 전송 함수 호출 : system]
var str = "hello"
window.webkit.messageHandlers.system.postMessage(str);
// [json 전송 함수 호출 : system]
var jsonObj = {"idx":1, "name":"twok"};
window.webkit.messageHandlers.system.postMessage(JSON.stringify(jsonObj));
===============================
// [자바스크립트 iOS 에서 전달한 데이터 확인]
===============================
function setSystem(value) {
<!-- 안드로이드에서 전달받음 -->
if (android_agent > -1) {
alert(value);
}
<!-- IOS에서 전달받음 -->
else if (iphone > -1 || ipad > -1) {
if (typeof value == "object") { // json 데이터 처리
alert(JSON.stringify(value));
}
else { // string 데이터 처리
alert(value);
}
}
}
===============================
// [iOS >> 자바스크립트 함수 호출]
===============================
// [json 전송 : 자바스크립트 에서는 object 형식으로 받는다]
// [딕셔너리 생성 >> JSONSerialization : json 데이터 생성]
self.main_webview!.evaluateJavaScript("setSystem(\(jsonObj))", completionHandler: nil)
// [string 전송]
var ok_data = "hello"
self.main_webview!.evaluateJavaScript("receive_Open('\(ok_data)')", completionHandler: nil)
// [일반 함수 호출]
var no_data = ""
self.main_webview!.evaluateJavaScript("receive_Open('\(no_data)')", completionHandler: nil)
===============================
// [iOS 자바스크립트에서 전달한 데이터 확인]
===============================
// [브릿지 경로 추가 : 데이터 받을 경로]
self.javascriptController.add(self, name: "system")
// [브릿지 : 자바스크립트에서 전달 받은 데이터 확인]
@available(iOS 8.0, *)
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
// [웹 코드] window.webkit.messageHandlers.system.postMessage('');
if message.name == "system" {
let receiveData = message.body as! String // 전달 받은 메시지 확인
}
}
반응형
'IOS' 카테고리의 다른 글
Comments