JS вызывает функцию в Swift
Я знаю, как отправить сообщение из JS в приложение IOS Swift:
func userContentController(userContentController: WKUserContentController!, didReceiveScriptMessage message: WKScriptMessage!) {
println("JavaScript is sending a message \(message.body)")
}
и JS:
webkit.messageHandlers.callbackHandler.postMessage("Hello from JavaScript");
Мой вопрос: можно ли напрямую вызывать функцию в нативном приложении, а не получать сообщение в моем примере кода.
скажем, я хочу в JS использовать что-то вроде:
webkit.messageHandlers.someFunctionName()
Причина, по которой я спрашиваю, заключается в том, что в Android так работает
2 ответа
WKWebView поддерживает только интерфейс передачи необработанных сообщений. Вы должны обернуть его для сложных взаимодействий между JS и native.
Я создал проект с именем XWebView, который предлагает API в стиле привязки к языку на основе необработанной передачи сообщений WKWebView. Это написано на Swift.
Например, вы можете написать плагин в Swift:
class Plugin : NSObject {
func someFunctionName() {
doSomeThing()
}
}
Перед загрузкой HTML откройте экземпляр плагина для JavaScript:
let webView = WKWebView(frame: frame, configuration: WKWebViewConfiguration())
webView.loadPlugin(Plugin(), namespace: "foo")
Вызовите функцию из JavaScript:
window.foo.someFunctionName()
Это действительно легко и просто. Для более подробной информации, пожалуйста, проверьте страницу проекта.
Вы можете попробовать использовать url parameters
Как вы бы подключились к PHP с помощью swift
Вот пример того, как получить параметры URL в javascript: Получить параметр URL-адреса jquery или Как получить значения строки запроса в js
Затем, когда вы запускаете JavaScript, вы можете проверить, что в url parameters
есть, а затем запустить функцию на основе этого
как этот URL-адрес example.com мы используем параметр command
сказать, какую функцию запустить
example.com?command=foo
тогда мы должны иметь что-то подобное в JavaScript
if(command='foo'){
//run function
runFoo();
}
Затем вы также можете использовать параметры URL для установки параметров в функцию
Если вы выбираете PHP
если вы решите использовать PHP, это то же самое, что вы можете сделать с $_GET['command'];