iOS Envoyer des messages à partir de JavaScript et les gérer du côté natif


Exemple

Les messages peuvent être envoyés à partir de JavaScript en utilisant le code suivant

window.webkit.messageHandlers.{NAME}.postMessage()

Voici comment créer un gestionnaire de messages de script pour gérer les messages:

class NotificationScriptMessageHandler: NSObject, WKScriptMessageHandler {
    func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage!) {
        if message.name == "{NAME}" {
            // to be sure of handling the correct message
            print(message.body)
        }
    }
}

Voici comment configurer le gestionnaire de messages de script dans WKWebView:

let configuration = WKWebViewConfiguration()
let userContentController = WKUserContentController()
let handler = NotificationScriptMessageHandler()
userContentController.addScriptMessageHandler(handler, name: "{NAME}")
configuration.userContentController = userContentController 
let webView = WKWebView(frame: self.view.bounds, configuration: configuration)

REMARQUE: ajouter le même gestionnaire "{NAME}" avec addScriptMessageHandler:name: plus d'une fois, entraîne NSInvalidArgumentException exception NSInvalidArgumentException .