内容1、H5调用原生APP方法;2、原生APP调用H5方法;3、H5跳转到原生APP页面;4、H5点击下载APPH5调用原生APP方法//name方法名(APP中定义的方法)//数据和原生交互数据(例如:微信分享时,调整原生分享方式,将分享的数据传到nativeAPP)//当Android不需要传输data数据时,直接调用window.App[name)]();//需要传输数据时调用window.App[](data);//IOS不需要传输数据时调用window.webkit.messageHandlers[name].postMessage(null);(IOS不传数据时,需要给null)//需要传数据时,window.webkit.messageHandlers[name].postMessage(data);//不需要与原生APP传数据//调用native方法,且数据为空,IOS需要通过nullexportconstuseNativeMethod=(name,data=null)=>{if(state.Navigator.indexOf('Android')>-1||state.Navigator.indexOf('Adr')>-1){window.App[name](data);}elseif(!!state.Navigator.match(/\(i[^;]+;(U;)?CPU.+MacOSX/)){window.webkit.messageHandlers[name].postMessage(data);}}原生APP调用H5方法//window['userInfo']=window.userInfo//原生APP调用JS方法,该方法需要直接在window对象中创建,不能在vue的方法中创建//vue这里是在main.js中创建的方法//app登录时,返回用户登录信息window['userInfo']=(data)=>{if(typeofdata=='object'){sessionStorage.setItem('userdata',JSON.stringify(data))vm.$store.state.userdata=data}else{sessionStorage.setItem('userdata',data)letuser=JSON.parse(data)vm.$store.state.userdata=user}}H5跳转到APP原页面//actuive是APP和前端之间的协议,建议Android/IOS协议同window.location.href='actuive://数据';打开APP首页window.location.href='actuive://data/gotologin'打开APP登录页面window.location.href=`actuive://data/${this.workDetail.opus_id}/${this.videodata.direction}`打开APP指定页面,向原生APPH5传输数据点击下载APP//点击下载APP,判断Ios/Android,跳转到不同地址下载APP//Android_Dow_Path安卓下载地址//IOS_Dow_PathIOS下载地址//'actuive://data'与app的协议,打开APP(只能在已安装的APP中使用,未安装APP则无效)exportconstopenApp=()=>{让平台;如果(窗口)平台=sessionStorage.platform||''varAndroid_Dow_Path=`xxxx?f=${platform}`;varIOS_Dow_Path=`xxxx?f=${platform}`;如果(window.navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|WindowsPhone)/i)){varAPPCommon={init:function(){this.openApp();},openApp:function(){varthis_=this;if(this_.isWeixin()||this_.isWeibo()){if(navigator.userAgent.match(/android/i)){window.location=Android_Dow_Path;}else{window.location=IOS_Dow_Path;}}else{if(navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)){varloadDateTime=newDate();window.setTimeout(function(){vartimeOutDateTime=newDate();if(timeOutDateTime-loadDateTime<5000){window.location=IOS_Dow_Path;}else{window.close();}},2000);window.location='actuive://data';}elseif(navigator.userAgent.match(/android/i)){尝试{window.location='actuive://data';setTimeout(function(){window.location=Android_Dow_Path;},500);}catch(e){}}}},//UA判断isWeixin:function(){varua=navigator.userAgent.toLowerCase();如果(ua.match(/MicroMessenger/i)=="micromessenger"){返回真;}else{返回错误;}},isWeibo:function(){varua=navigator.userAgent.toLowerCase();if(ua.match(/微博/i)=="微博"){returntrue;}else{返回错误;}},isAndroid:function(){returnnavigator.userAgent.match(/Android/i)?真假;},isMobileQQ:function(){varua=navigator.userAgent;返回/(iPad|iPhone|iPod).*?(iPad)?QQ\/([\d\.]+)/.test(ua)||/\bV1_AND_SQI?_([\d\.]+)(.*?QQ\/([\d\.]+))?/.test(ua);},isIOS:function(){returnnavigator.userAgent.match(/iPhone|iPad|iPod/i)?真假;},}APPCommon.init()}else{//console.log('PC端')alert('请使用手机打开Meet!')}}
