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); }