Привет, я пытаюсь реализовать связь между JavaScript и IOS.Я преуспел в создании соединения для получения обратного вызова в ios из javascript с использованием messageHandlers с помощью следующего кода
import UIKit
import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
private var webView : WKWebView?
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("Message from beyond: \(message.body)")
let jsMapper = JavaScriptInterfaceMapping()
jsMapper.perform(Selector(("noParam")))
jsMapper.perform(Selector(("oneParam:")), with: "firstParam")
jsMapper.perform(Selector(("twoParams::")), with: [1, true], with: "Go Away")
webView?.evaluateJavaScript("letSee()", completionHandler: nil)
}
override func loadView() {
super.loadView()
let controller = WKUserContentController()
controller.add(self, name: "xyz")
let config = WKWebViewConfiguration()
config.userContentController = controller
self.webView = WKWebView(frame: self.view.frame, configuration: config)
self.view = self.webView!
}
override func viewDidLoad() {
super.viewDidLoad()
let url = Bundle.main.url(forResource: "index", withExtension: "html")
let request = URLRequest(url: url!)
webView!.load(request)
}
}
<!Doctype html>
<html>
<head>
<title>Test Web</title>
<script>
window.webkit.messageHandlers.xyz.postMessage("tem")
function buttonClick1() {
window.webkit.messageHandlers.xyz.postMessage("tem");
}
function myFunction() {
return "Hi Shubham"
}
</script>
<script src="script.js" ></script>
</head>
<body>
<h3>If you see this then you are working very fine</h1>
<br />
<br />
<br />
<h3 class="happy">Shubham Bhiwaniwala</h3>
<h3><a href="support.html" >Support page</a></h3>
<button onclick="alert('Hi Shubham, how are you?')" >Say Hello</button>
<button onclick="buttonClick1()" >Call Me</button>
</body>
</html>
import Foundation
@objcMembers class JavaScriptInterfaceMapping: NSObject {
func noParam() {
print("I got called.")
}
func oneParam(_ a: String) {
print("I got \(a)")
}
func twoParams(_ first: [Any], _ second: String) {
// print("I got \(first), \(second)")
print("I got first item as: \(first[0])")
print("I got second item as: \(first[1])")
print(second)
}
func threeParams(_ first: [Any], _ second: String, _ third: Bool) {
// print("I got \(first), \(second)")
print("I got first item as: \(first[0])")
print("I got second item as: \(first[1])")
print(second)
print(third)
}
}
Я выяснил это решение сделать вызов метода в iOS из javascript.Но я узнал, что при соединении javascript с android мы можем получить доступ к объектам классов, присутствующих в android, внутри javascript.
Это означает, что мы можем вызывать функции напрямую из javascript и выполнять работу в android.
Так есть ли способ получить такую же функциональность в разработке для iOS?
Спасибо