カスタムWebKitスクリプトメッセージハンドラを挿入しようとしています。私のコントローラーが正しくロードされ、ビューも表示されます。しかし、JS側(Safariコンソールから)のwindow.webkit.messageHandlers
は空です。どんな考え?私のアプリはiOS 8.1を使用していますが、9.2にアップグレードしても機能しませんでした。スクリプトメッセージハンドラが機能しない
import Foundation
import UIKit
import WebKit
public class FooController: UIViewController, WKScriptMessageHandler {
private var wkWebView: WKWebView?
public override func viewDidLoad() {
super.viewDidLoad()
let o = WKUserContentController()
o.addScriptMessageHandler(self, name: "foo")
let config = WKWebViewConfiguration()
config.userContentController = o
self.wkWebView = WKWebView(frame: self.view.bounds, configuration: config)
self.view.addSubview(self.wkWebView!)
self.wkWebView!.loadRequest(NSURLRequest(URL: NSBundle.mainBundle().URLForResource("foo", withExtension: "html")!))
}
public func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
print("foo")
}
}
オナトねえ、おかげで起動しませんでした。私は 'messageHandlers'がオブジェクトであることを知っています。しかし、キーが全くなく、特に 'foo'が欠けています。 –
あなたの素早いコードは私のためにうまくいきました。メッセージハンドラを呼び出す方法や "foo"の存在を確認する方法を投稿できますか? – Onato
Arf。ただ再テストされ、正常に動作します。混乱させて申し訳ありません。 しかし、今は別の問題があります。カスタムデータを投稿することはできません。私は2つの文字列と別の辞書を持つ辞書を投稿しようとしました、そして、私が受け取ったボディは、ただ1つの文字列を含んでいました。大したことではありませんが、それについて何か知っていますか? –