当前位置: 首页 > Web前端 > HTML5

Vue实现Android与IOS交互

时间:2023-04-05 18:11:35 HTML5

方案后台IOS使用jsBridge插件实现调用、传参、回调。Android使用窗口挂载方式和挂载回调。IOS实现方案调用native方法,封装如下函数window.WVJBCallbacks=[回调]letWVJBIframe=document.createElement('iframe')WVJBIframe.style.display='none'WVJBIframe.src='https://__bridge_loaded__'document.documentElement.appendChild(WVJBIframe)setTimeout(()=>{document.documentElement.removeChild(WVJBIframe)},0)}functioncallhandler(name,data,callback){setupWebViewJavascriptBridge(function(bridge){bridge.callHandler(name,data,callback)})}实际上调用了下面的callhandler(functionName:string,params:object,res=>{})注册方法到原生registerhandler(name,callback){//Androidwindow[name]=res=>{letdata=JSON.parse(res)callback(data)}//IOSsetupWebViewJavascriptBridge(function(bridge){bridge.registerHandler(name,function(data,responseCallback){callback(data,responseCallback)})})}Android实现调用native的methodwindow.HTTP_TEST.functionName()定义了原生window的回调方法/注册方法['functionName']=res=>{}特别注意Android在交互中的传参只能支持string类型,而对象参数必须转成字符串传递因为Android的回调方法名是固定的,当同一个方法同时被请求两次以上时,有可能只得到一个回调。如果用随机数来处理,就会不断给窗口挂载新的函数。调用太多可能会导致问题。问题,所以目前通过避免同时请求相同的方法来解决。如果有无法避免的需求,还是需要用随机数来解决。

最新推荐
猜你喜欢