js交互app

            function initJsBridge(readyCallback) {
                 var u = navigator.userAgent;
                 var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
                 var isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
                 // 注册jsbridge
                 function connectWebViewJavascriptBridge(callback) {
                     if (isAndroid) {
                         if (window.WebViewJavascriptBridge) {
                             callback(WebViewJavascriptBridge)
                         } else {
                             document.addEventListener(
                                 'WebViewJavascriptBridgeReady'
                                 , function () {
                                     callback(WebViewJavascriptBridge)
                                 },
                                 false
                             );
                         }
                         return;
                     }
                     if (isiOS) {
                         if (window.WebViewJavascriptBridge) {
                             return callback(WebViewJavascriptBridge);
                         }
                         if (window.WVJBCallbacks) {
                             return window.WVJBCallbacks.push(callback);
                         }
                         window.WVJBCallbacks = [callback];
                         var WVJBIframe = document.createElement('iframe');
                         WVJBIframe.style.display = 'none';
                         WVJBIframe.src = 'https://__bridge_loaded__';
                         document.documentElement.appendChild(WVJBIframe);
                         setTimeout(function () {
                             document.documentElement.removeChild(WVJBIframe)
                         }, 0)
                     }
                 }

                 // 调用注册方法
                 connectWebViewJavascriptBridge(function (bridge) {
                    if (isAndroid) {
                         bridge.init(function (message, responseCallback) {
                             console.log('JS got a message', message);
                             responseCallback(data);
                         });
                    }
                      
                     // 只有在这里注册过的方法,在原声代码里才能用callHandler的方式调用
                     bridge.registerHandler('contectLists', function (data, responseCallback) {
                         showResponse(data);
                         alert("data___"+data)
                     });
                      readyCallback();
                  });
            }

            // 首先调用JSBridge初始化代码,完成后再设置其他
            initJsBridge(function () {
                // 通过JsBridge调用原生方法,写法固定,第一个参数时方法名,第二个参数时传入参数,第三个参数时响应回调
                window.WebViewJavascriptBridge.callHandler('getContects', null, function (response) {
                    // showResponse(response);
                });
            });

  

function connectWebViewJavascriptBridge (callback) { if (window.WebViewJavascriptBridge) { callback(WebViewJavascriptBridge) } else { document.addEventListener( 'WebViewJavascriptBridgeReady' , function() { callback(WebViewJavascriptBridge) }, false ); } }
connectWebViewJavascriptBridge (function(bridge) {
// bridge.registerHandler('JS Echo', function(data, responseCallback) { console.log("JS Echo called with:", data) responseCallback(data) })
bridge.callHandler('oliveness', {}, function responseCallback(responseData) { }) })

原文地址:https://www.cnblogs.com/dontes/p/9713558.html