Swift3의 네이티브 앱과 자바 스크립트 통신
8447 단어 swift3
Javascript 작성
적당히 서버에 배치
communication.html<html>
<head>
<tite></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
//こちらの関数はSwiftから呼ばれる
function fromSwift() {
$('p').text('Swiftから呼ばれてるよ!!!!');
}
(function() {
$(window).load(function() {
//window.location.hashは、URLの「#」記号の後の部分を取得、もしくは、設定するプロパティ。これでSwiftからのデータ取得
var swiftData = window.location.hash;
$('p').text('Swiftからもらった:' + swiftData);
$('.btn').on('click', function() {
//以下のURLをSwiftから取得
window.location = "fromJavascript://hello";
});
});
})(jQuery)
</script>
<body>
<h1>Swift3のネイティブアプリとJavascritpの通信</h1>
<p></p>
<div class="container">
<button class="btn">Swiftにイベント送信</button>
</div>
</body>
</html>
Swift ViewController
Swift 소스
ViewController.swiftimport UIKit
class ViewController: UIViewController , UIWebViewDelegate{
@IBOutlet weak var web: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
//LocalサーバーURL
let url = URL(string: "http://192.168.11.11")
//#を追加した文字列はwindow.location.hashから取得できる
let insertUrl = URL(string: "#HelloJavascrpt", relativeTo: url)
let urlRequest = URLRequest(url: insertUrl!)
web.delegate = self
web.loadRequest(urlRequest)
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if let scheme = request.url?.scheme {
if scheme == "fromjavascript" {
//Javascriptのメッソドを呼び出す
web.stringByEvaluatingJavaScript(from: "fromSwift()")
return false
}
}
return true
}
}
실행 결과
HelloJavascript 문자열은 Swift에서 보낸 문자열입니다.
Swift로 이벤트 보내기 클릭 후 Swift에서 javascript 메소드 호출
Reference
이 문제에 관하여(Swift3의 네이티브 앱과 자바 스크립트 통신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/HavenSpring/items/ffb94ee917b7f2fca4a3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<html>
<head>
<tite></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
//こちらの関数はSwiftから呼ばれる
function fromSwift() {
$('p').text('Swiftから呼ばれてるよ!!!!');
}
(function() {
$(window).load(function() {
//window.location.hashは、URLの「#」記号の後の部分を取得、もしくは、設定するプロパティ。これでSwiftからのデータ取得
var swiftData = window.location.hash;
$('p').text('Swiftからもらった:' + swiftData);
$('.btn').on('click', function() {
//以下のURLをSwiftから取得
window.location = "fromJavascript://hello";
});
});
})(jQuery)
</script>
<body>
<h1>Swift3のネイティブアプリとJavascritpの通信</h1>
<p></p>
<div class="container">
<button class="btn">Swiftにイベント送信</button>
</div>
</body>
</html>
Swift 소스
ViewController.swift
import UIKit
class ViewController: UIViewController , UIWebViewDelegate{
@IBOutlet weak var web: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
//LocalサーバーURL
let url = URL(string: "http://192.168.11.11")
//#を追加した文字列はwindow.location.hashから取得できる
let insertUrl = URL(string: "#HelloJavascrpt", relativeTo: url)
let urlRequest = URLRequest(url: insertUrl!)
web.delegate = self
web.loadRequest(urlRequest)
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if let scheme = request.url?.scheme {
if scheme == "fromjavascript" {
//Javascriptのメッソドを呼び出す
web.stringByEvaluatingJavaScript(from: "fromSwift()")
return false
}
}
return true
}
}
실행 결과
HelloJavascript 문자열은 Swift에서 보낸 문자열입니다.
Swift로 이벤트 보내기 클릭 후 Swift에서 javascript 메소드 호출
Reference
이 문제에 관하여(Swift3의 네이티브 앱과 자바 스크립트 통신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/HavenSpring/items/ffb94ee917b7f2fca4a3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Swift로 이벤트 보내기 클릭 후 Swift에서 javascript 메소드 호출
Reference
이 문제에 관하여(Swift3의 네이티브 앱과 자바 스크립트 통신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/HavenSpring/items/ffb94ee917b7f2fca4a3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)