2015-06-16 97 views
5

功能我知道如何從JS將消息發送到本地IOS迅速應用:JS調用雨燕

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

你有一個你使用的網址的權利?從ios應用程序調用js? –

回答

0

你可以嘗試使用url parameters,就像您連接到PHP中使用快捷

這裏是如何讓JavaScript中的URL參數的例子:Get url parameter jquery Or How to Get Query String Values In js

然後,當你運行的JavaScript可以檢查,在檢查什麼url parameters是,然後運行基於該

這樣 功能的網址是example.com我們使用的參數command,說什麼功能運行

example.com?command=foo 

那麼我們就應該在JavaScript成纔有這樣

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

的n您還可以使用URL參數來設置參數代入函數

如果選擇PHP

如果您選擇使用PHP,這是你可以用$_GET['command'];

3

WKWebView做同樣的事情僅支持原始消息傳遞接口。您必須包裝它以便JS和本機之間的複雜交互。

我創建了一個名爲XWebView的項目,它提供了基於WKWebView的原始消息傳遞的語言綁定樣式的API。它是用Swift編寫的。

例如,你可以在斯威夫特編寫插件:

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

從JavaScript調用該函數::

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

加載HTML之前揭露插件的實例爲JavaScript

window.foo.someFunctionName() 

這真的很簡單直接。有關更多詳細信息,請檢查項目頁面。