Web调用APP方法

作者: yimi珊 | 来源:发表于2018-02-12 16:32 被阅读41次

    封装useApp.js

    useApp.js

    //ios
    function setupWebViewJavascriptBridge(callback) {
        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 = 'wvjbscheme://__BRIDGE_LOADED__';
        document.documentElement.appendChild(WVJBIframe);
        setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
    }
    function connectWebViewJavascriptBridge(callback) {
        if (window.WebViewJavascriptBridge) {
            callback(WebViewJavascriptBridge)
        } else {
            document.addEventListener(
                'WebViewJavascriptBridgeReady'
                , function() {
                    callback(WebViewJavascriptBridge)
                },
                false
            );
        }
    }
    var u = navigator.userAgent;
    window.isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
    window.isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    window.client = {};
    window.client.init = function( callback ){
        if(isAndroid){
            connectWebViewJavascriptBridge(function (bridge) {
                bridge.init(function(message, responseCallback) {
                    console.log('JS got a message', message);
                    var data = {
                        'Javascript Responds': '测试中文!'
                    };
                    console.log('JS responding with', data); 
                    responseCallback(data);
                });
                // generateClient(bridge);  
                callback && callback(bridge);      
            });
        }else if(isiOS){
            setupWebViewJavascriptBridge(function (bridge) {
                // generateClient(bridge);        
                callback && callback(bridge);                  
            });
        }
    }
    window.client.init(function(bridge){
        window.appExec = bridge;
        // 获取 token
        bridge.callHandler('getUserToken', null , function(tokenIn) {
            window.client.token = tokenIn;
            //alert(window.client.token)
            //cb && cb();
        })
        // 退出
    })
    

    在js中引入useApp.js文件

    import useapp from 'useapp.js地址';
    

    调用方法

    appExec.callHandler('方法名', '参数',function(返回数据){
      //对返回数据进行处理
    });
    

    相关文章

      网友评论

        本文标题:Web调用APP方法

        本文链接:https://www.haomeiwen.com/subject/cjwrtftx.html