Created
January 20, 2017 02:14
-
-
Save wayne5540/59f7efd00f76dc91eeb383f8b4128c7e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
import WebKit | |
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate, WKScriptMessageHandler { | |
var webView: WKWebView! | |
override func loadView() { | |
let webConfiguration = WKWebViewConfiguration() | |
let contentController = WKUserContentController() | |
// Inject JavaScript which sending message to App | |
let js: String = "window.webkit.messageHandlers.callbackHandler.postMessage('Hello from JavaScript');" | |
let userScript = WKUserScript(source: js, injectionTime: WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: false) | |
contentController.removeAllUserScripts() | |
contentController.addUserScript(userScript) | |
// Add ScriptMessageHandler | |
contentController.add( | |
self, | |
name: "callbackHandler" | |
) | |
webConfiguration.userContentController = contentController | |
webView = WKWebView(frame: .zero, configuration: webConfiguration) | |
webView.uiDelegate = self | |
webView.navigationDelegate = self | |
view = webView | |
} | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
let myURL = URL(string: "http://localhost:3000") | |
let myRequest = URLRequest(url: myURL!) | |
webView.load(myRequest) | |
} | |
// Implement `WKScriptMessageHandler`,handle message which been sent by JavaScript | |
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { | |
if(message.name == "callbackHandler") { | |
print("JavaScript is sending a message \(message.body)") | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment