安卓与苹果盒子与h5相互调用,js,vue

5 篇文章 1 订阅
4 篇文章 0 订阅

公司里面,有原生的安卓和ios开发,为了减少版本更新,个别页面需要用h5来写,放到服务器上,方便及时更新。

fn是方法名,strobj是传递的参数,安卓必须是以字符串的形式,ios即可以是字符串也是可以是对象,建议传对象

这是h5向安卓和ios传递参数

<template>
	<div>
		<div @click="callTel()">拨打电话</div>
	</div>
</template>
methods:{
	isLogin(){ //判断登录
        let u = navigator.userAgent;
        let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
        let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        let strobj = {}
        if(isAndroid){
          window.javatojs.isLogin(JSON.stringify(strobj));	//安卓去执行登录操作,跳转
        }else if(isiOS){
          window.webkit.messageHandlers.isLogin.postMessage(strobj);	//安卓去执行登录操作,跳转
        }
   	},
   	callTel(){		//callTel 安卓和ios共同的方法名
   		let _t = this
   		if(!this.Authorization){
      	  Dialog({ message: '您还不是本站用户,请先登录' });
      		setTimeout(() =>{
      	    	Dialog.close()
      			_t.isLogin()	//交予安卓和ios处理
      		},1000)
      		return
      	}
        let mobile =  (this.info.contacts).split(" ")[1]
        let u = navigator.userAgent;
        let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
        let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        let strobj={
          mobile:mobile
          title:'xdl',
		  img:'xdl',
		  url:'www.baidu.com',
        }
        if(isAndroid){
          window.javatojs.callTel(JSON.stringify(strobj));
        }else if(isiOS){
          window.webkit.messageHandlers.callTel.postMessage(strobj);
        }
   	},
   
}

上面是h5向安卓和ios传递参数,下面是安卓和ios传值给h5

Android

created(op) {
  this.id = this.$route.query.id || ''
  this.goApplyToken()
},
methods:{
	goApplyToken(){
	  let u = navigator.userAgent;
	  let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
	  let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
	    if(isAndroid){
	    	//xdljs 这个是和安卓共同定义的
	      this.Authorization = window.xdljs.goToken()
	    }
	},
	getToken(str){
	  this.Authorization = str
	},
}

goApplyToken是和安卓一起定义的函数名,它会有一个返回值,我们在调用嵌入的h5页面执行goApplyToken方法,就可以拿到安卓传递过来的参数了

ios
goToken必须要定义在全局,一进入这个页面,ios把值传递过来

created(op) {
	this.id = this.$route.query.id || ''
	window.getToken = this.getToken;	//必须
},
methods:{
	//获取ios传递过来得值
	getToken(str){
	  this.Authorization = str
	},
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值