WebViews を使用して、Android と iOS のハイブリッド アプリを開発しています。ただし、iOS アプリから Javascript にデータを返すのに苦労しています。
以下は、JavaScript 関数からデータを受け取るように WebView をセットアップする方法です。
private lazy var webViewConfiguration: WKWebViewConfiguration = {
let configuration = WKWebViewConfiguration()
configuration.userContentController.add(self, name: "loginController")
return configuration
}()
extension ApplicationController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if (message.name == "loginController"){
print("\(message.body)")
}
}
}
これは、アプリにデータを渡す方法です。
webkit.messageHandlers.loginController.postMessage("Hello from JavaScript");
基本的に、私がやりたいことは、アプリから JavaScript にデータを受け取り、これに沿って何かを実行できるようにすることです...
var response = webkit.messageHandlers.loginController.postMessage("Hello from JavaScript");
しかし、アプリから何かを返す方法がわかりません。私はSwiftが初めてです。ただし、Android 開発者の場合、戻り値の型を関数に追加するのと同じくらい簡単ですが、これは Swift では機能しません。