场景:混合开发,web调用原生登录页面,API如图:
web端代码:
// 以7、调用原生登录页面为例子
function jumpCallbackHandler(result){
// 拿到result,做接下来的事情
}
// 给native端传递的参数
var params = {
"category":"jump",
"des":"login",
"params": {}
}
// native端url
var url = 'openapp.xstorei7fresh://virtual?' + params;
// 发送url schema
window.location.href= url;
原理:web是嵌入在native端的webview中的,当web端window.location.href时,native端会根据url判断是否是schema协议(://),如果是schema协议会调用相应的方法处理,把处理后的数据返回,并且调用web端暴漏的js接口(一个js函数,比如jumpCallbackHandler),并且把参数输出出来,这样有输入输出的就是一个完整的web端调用native接口了。
优化:其实这种方法不是最优的,因为每次调用都要指定不同的js方法作为回调,以下是改善后的代码
// 以7、调用原生登