webapp前端和安卓java, IOS swift 之间方法的互相调用
export default { run(fn, data, cb) { console.log(fn, data, cb) /** * @fn 调用java 反射的方法 * @data 调用方法携带的参数 * @cb 调用失败的回调函数(可选) */ 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终端 if (isAndroid) { try { if (window.snailJsBridge && window.snailJsBridge.invoke) { window.snailJsBridge.invoke(fn, JSON.stringify(data)) } } catch (err) { cb(new Error('方法调用失败')) } } else if (isiOS) { try { window.webkit.messageHandlers[fn].postMessage(data) } catch (err) { cb(new Error('方法调用失败')) } } else { cb(new Error('请在真机App中调用此方法')) } }, /** * * @param {fn} fn 扫码成功, 后台调用前端的函数名 * @param {*} cb 扫码失败的回调 */ appScan(fn, cb) { this.run( 'scan', { function: fn }, cb ) }, /** * @param {fn} 挂载函数 * @param {cb} 错误回调 */ appGetLocation(fn, cb) { this.run('getLocation', { function: fn }, cb) }, /** * @param {*} tel: 要拨打的电话号码 * @param {*} cb : 拨号失败的回调函数 */ appCall(tel, cb) { this.run('call', { url: tel }, cb) } }
本想把生活活成一首诗, 时而优雅 , 时而豪放 , 结果活成了一首歌 , 时而不靠谱 , 时而不着调