From 0ef2ebf587b19959877a7338d6069d533d7bda41 Mon Sep 17 00:00:00 2001 From: liuhuan Date: Mon, 8 Jan 2018 13:50:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8js=E5=92=8Cnative=E9=87=8C=E9=83=BD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=A4=E4=B8=AA=E5=85=B1=E5=90=8C=E5=A4=84?= =?UTF-8?q?=E7=90=86=201=E3=80=81=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=BF=87=E8=B0=83=E7=94=A8=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E5=90=8D=EF=BC=8C=E5=88=99=E5=9B=9E=E8=B0=83=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E2=80=9CNoMethodInXX=E2=80=9D=202=E3=80=81=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0JS=E5=92=8C=E5=8E=9F=E7=94=9F=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AF=B9=E6=96=B9=E5=B7=B2=E7=BB=8F=E6=B3=A8=E5=86=8C=E8=BF=87?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WebViewJavascriptBridgeBase.m | 15 ++++++++++++++- .../WebViewJavascriptBridge_JS.m | 12 ++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.m b/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.m index 3ec26ed4..59db3c27 100755 --- a/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.m +++ b/WebViewJavascriptBridge/WebViewJavascriptBridgeBase.m @@ -102,7 +102,20 @@ - (void)flushMessageQueue:(NSString *)messageQueueString{ if (!handler) { NSLog(@"WVJBNoHandlerException, No handler for message from JS: %@", message); - continue; + //continue; + if (responseCallback) { + // 如果是获取所有method的方法列表 + if ([@"allNativeMethodsImplementationForJs" isEqualToString:message[@"handlerName"]]) { + NSArray *handlerNames = self.messageHandlers.allKeys; + if(handlerNames == nil){ + handlerNames = @[]; + } + responseCallback(handlerNames); + }else{ + responseCallback(@"NoMethodInNative"); + } + + } } handler(message[@"data"], responseCallback); diff --git a/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.m b/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.m index 670a552f..9ec41882 100644 --- a/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.m +++ b/WebViewJavascriptBridge/WebViewJavascriptBridge_JS.m @@ -105,6 +105,18 @@ function _doDispatchMessageFromObjC() { var handler = messageHandlers[message.handlerName]; if (!handler) { console.log("WebViewJavascriptBridge: WARNING: no handler for message from ObjC:", message); + if (responseCallback) { + if ("AllMethodsImplementationInJs" == message.handlerName) { + var keys = []; + for (var handlerName in messageHandlers){ + keys.push(handlerName); + } + responseCallback(keys); + }else{ + responseCallback("NoMethodInJs"); + } + + } } else { handler(message.data, responseCallback); }