Skip to content

Commit 0f829e5

Browse files
committed
fix js to send messages to native and native callback js
1 parent 43945f7 commit 0f829e5

4 files changed

Lines changed: 22 additions & 16 deletions

File tree

WKWebViewJavascriptBridge/WKWebViewJavascriptBridge.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class WKWebViewJavascriptBridge: NSObject {
4343
}
4444

4545
func flushMessageQueue() {
46-
webView.evaluateJavaScript("WebViewJavascriptBridge._fetchQueue();") { (result, error) in
46+
webView.evaluateJavaScript("WKWebViewJavascriptBridge._fetchQueue();") { (result, error) in
4747
if error != nil {
4848
print("WKWebViewJavascriptBridge: WARNING: Error when trying to fetch data from WKWebView: \(String(describing: error))")
4949
}

WKWebViewJavascriptBridge/WKWebViewJavascriptBridgeBase.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public class WKWebViewJavascriptBridgeBase: NSObject {
113113
// messageJSON = messageJSON.replacingOccurrences(of: "\u2028", with: "\\u2028")
114114
// messageJSON = messageJSON.replacingOccurrences(of: "\u2029", with: "\\u2029")
115115

116-
let javascriptCommand = "WebViewJavascriptBridge._handleMessageFromiOS('\(messageJSON)');"
116+
let javascriptCommand = "WKWebViewJavascriptBridge._handleMessageFromiOS('\(messageJSON)');"
117117
if Thread.current.isMainThread {
118118
self.delegate?.evaluateJavascript(javascript: javascriptCommand)
119119
} else {

WKWebViewJavascriptBridgeDemo/Demo.html

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ <h1>Demo</h1>
4949
document.body.appendChild(document.createElement('br'))
5050

5151
var callbackButton = document.getElementById('buttons').appendChild(document.createElement('button'))
52-
callbackButton.innerHTML = 'Fire testObjcCallback'
52+
callbackButton.innerHTML = 'Fire testiOSCallback'
5353
callbackButton.onclick = function(e) {
5454
e.preventDefault()
55-
log('JS calling handler "testObjcCallback"')
56-
bridge.callHandler('testObjcCallback', {'foo': 'bar'}, function(response) {
55+
log('JS calling handler "testiOSCallback"')
56+
bridge.callHandler('testiOSCallback', {'foo': 'bar'}, function(response) {
5757
log('JS got response', response)
5858
})
5959
}
@@ -105,12 +105,14 @@ <h1>Demo</h1>
105105

106106
function _doSend(message, responseCallback) {
107107
if (responseCallback) {
108-
var callbackId = 'cb_'+(uniqueId++)+'_'+new Date().getTime();
109-
responseCallbacks[callbackId] = responseCallback;
110-
message['callbackId'] = callbackId;
108+
var callbackID = 'cb_'+(uniqueId++)+'_'+new Date().getTime();
109+
responseCallbacks[callbackID] = responseCallback;
110+
message['callbackID'] = callbackID;
111111
}
112112
sendMessageQueue.push(message);
113-
messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE;
113+
114+
<!-- messagingIframe.src = CUSTOM_PROTOCOL_SCHEME + '://' + QUEUE_HAS_MESSAGE;-->
115+
window.webkit.messageHandlers.iOS_Native_FlushMessageQueue.postMessage(null)
114116
}
115117

116118
function _fetchQueue() {
@@ -131,18 +133,18 @@ <h1>Demo</h1>
131133
var messageHandler;
132134
var responseCallback;
133135

134-
if (message.responseId) {
135-
responseCallback = responseCallbacks[message.responseId];
136+
if (message.responseID) {
137+
responseCallback = responseCallbacks[message.responseID];
136138
if (!responseCallback) {
137139
return;
138140
}
139141
responseCallback(message.responseData);
140-
delete responseCallbacks[message.responseId];
142+
delete responseCallbacks[message.responseID];
141143
} else {
142-
if (message.callbackId) {
143-
var callbackResponseId = message.callbackId;
144+
if (message.callbackID) {
145+
var callbackResponseId = message.callbackID;
144146
responseCallback = function(responseData) {
145-
_doSend({ handlerName:message.handlerName, responseId:callbackResponseId, responseData:responseData });
147+
_doSend({ handlerName:message.handlerName, responseID:callbackResponseId, responseData:responseData });
146148
};
147149
}
148150

WKWebViewJavascriptBridgeDemo/ViewController.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@ class ViewController: UIViewController {
1818
super.viewDidLoad()
1919
webView.frame = view.bounds
2020
webView.navigationDelegate = self
21-
bridge = WKWebViewJavascriptBridge(webView: webView)
2221
view.addSubview(webView)
22+
bridge = WKWebViewJavascriptBridge(webView: webView)
23+
bridge.register(handlerName: "testiOSCallback") { (paramters, callback) in
24+
print("testiOSCallback called: \(String(describing: paramters))")
25+
callback!("Response from testiOSCallback")
26+
}
2327
loadDemoPage()
2428
}
2529

0 commit comments

Comments
 (0)