Sto tentando di inserire un gestore di messaggi di script WebKit personalizzato. Il mio controller è stato caricato correttamente e anche la vista. Tuttavia, dal lato JS (dalla console di Safari), window.webkit.messageHandlers
è vuoto. Qualche idea del perché? La mia app utilizza iOS 8.1, ma anche aggiornando a 9.2, non ha funzionato.Il gestore dei messaggi di script non funziona
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")
}
}
Hey Onato, grazie per la risposta. So che messageHandlers è un oggetto. Ma non ha alcuna chiave e in particolare manca "pippo". –
Il tuo codice swift ha funzionato bene per me. Puoi pubblicare come stai chiamando il tuo gestore di messaggi o verificare l'esistenza di "pippo"? – Onato
Arf. Appena ripetuto e funziona bene. Dispiace per la confusione. Tuttavia, ho un problema diverso ora. Non posso pubblicare dati personalizzati. Ho provato a pubblicare un dizionario con 2 stringhe e un altro dizionario e il corpo che ho ricevuto includeva solo una singola stringa. Non è un grosso problema, ma ne sai qualcosa? –