export default function SendMessageToApp() {

    let messageName = 'nullName'
    let params = '';
    let callback;

    //app定义的的方法名
    if (typeof arguments[0] == "string") {
        messageName = arguments[0]
    }

    //传递的参数或者回调函数
    let arg1 = arguments[1];
    if (typeof arg1 == "function") {
        callback = arg1
    }else if (typeof arg1 != "undefined") {
        params = arg1
    }

    //回调函数
    if (typeof arguments[2] == "function") {
        callback = arguments[2]
    }

    if (callback) {
        let fun_name = getFunName(callback)
        window[fun_name] = callback
    }

    if (window.webkit != undefined) {

        sendToIOS(messageName, params)
    }else{
        //貌似安卓传的参数,不能是数组和对象,所以这里json一下
        if (typeof params != "string") {
            params = JSON.stringify(params)
        }
        sendToAndroid(messageName, params)
    }
}

function sendToIOS(messageName, params) {
    window.webkit.messageHandlers[messageName].postMessage(params)
}

function sendToAndroid(messageName, params) {
    try {
        if (params.length > 0) {
            console.log("有参")
            AndroidWebViewBridge[messageName](params)
        }else{
            console.log("无参")
            AndroidWebViewBridge[messageName]()
        }
    } catch(error) {
        console.log(error)
    }

}

function getFunName(fn) {
    let res = fn.name.split(' ')
    if (res.length > 1) {
        return res[1]
    }else if (res.length > 0) {
        return res[0]
    }
}