5

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ではそれがどのように機能するかということです

4

2 に答える 2

3

WKWebView は、生のメッセージ パッシング インターフェイスのみをサポートします。JS とネイティブの間の複雑な相互作用のためにラップする必要があります。

WKWebViewの生のメッセージ パッシングに基づいて言語バインディング スタイルの API を提供するXWebViewという名前のプロジェクトを作成しました。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()

それは本当に簡単で簡単です。詳しくはプロジェクトページをご確認ください。

于 2015-06-24T10:22:51.820 に答える
-1

Swift を使用して PHP に接続する場合と同様に、URL クエリ変数を使用することもできます。

Javascript でクエリ変数を取得する方法の例を次に示します: Get url parameter jquery または How to Get Query String Values In js

次に、Javascript を実行すると、URL クエリ変数が何であるかを確認し、それに基づいて関数を実行できます。

たとえば、command次の変数を使用して、実行する関数を指定します。

example.com?command=foo

次に、Javascript で次のようにします。

if(command == 'foo') {
   runFoo();
}

次に、URL クエリ変数を使用して関数の引数を指定することもできます。

PHPを選択した場合

PHP の使用を選択した場合は、$_GET['command'];.

于 2015-06-16T12:13:02.363 に答える