2015-06-16 5 views
5

Я знаю, как отправить сообщение от JS в родной IOS быстрое приложение:JS вызова функции в 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 вот как это работает

+0

У вас есть URL-адрес, который вы используете правильно? вызвать js из приложения ios? –

ответ

0

Вы можете попробовать использовать url parameters, как вы бы подключение к PHP используя быстрое

Вот пример того, как получить параметры URL в JavaScript: Get url parameter jquery Or How to Get Query String Values In js

Тогда при запуске JavaScript вы можете проверить, в проверке того, что url parameters являются, а затем запустить функцию, основанную на том

как этот URL-адрес является example.com мы используем параметр command, чтобы сказать, что функция запустить

example.com?command=foo 

тогда мы должны коснуться, как это в JavaScript

if(command='foo'){ 
    //run function 
    runFoo(); 
} 

п можно также использовать параметры URL, чтобы задать параметры в функции

Если вы выбираете PHP

, если вы решили использовать PHP, это то же самое вы можете сделать с $_GET['command'];

3

WKWebView поддерживает только интерфейс передачи необработанных сообщений. Вы должны обернуть его для сложных взаимодействий между JS и native.

Я создал проект с именем XWebView, который предлагает API-интерфейс с привязкой к языку, основанный на передаче необработанного сообщения WKWebView. Это написано в Свифте.

Например, вы можете написать плагин в Swift:

class Plugin : NSObject { 
    func someFunctionName() { 
     doSomeThing() 
    } 
} 

Expose экземпляр плагина JavaScript перед загрузкой HTML:

let webView = WKWebView(frame: frame, configuration: WKWebViewConfiguration()) 
webView.loadPlugin(Plugin(), namespace: "foo") 

Вызов функции из JavaScript:

window.foo.someFunctionName() 

Это действительно легко и просто. Для получения дополнительной информации, пожалуйста, проверьте страницу проекта.