vue项目多个单页面 嵌入ios或原生
在使用vue与原生ios和安卓沟通时,常规方法是h5引用安卓和ios的方法,原生再对事件进行处理,因为是多个单页面引用 下面就是我获取token时和原生之间的方法:
在app.vue文件下的created生命周期中去第一时间调用原生之间的方法,原生在事件中return 出token,但是在与ios交互时,发现ios方面无法在第一时间将token传过来,因为在他们的生命周期中创建时,不能准确的触发,所以我们先在main.js 创建getToke事件 参数是token,然后在app.vue中 引用ios的postMessage事件告诉他我们这边准备好了让他调用main.js中的事件带参,这时候就能在第一时间拿到ios的token,另外,原生的数据是json字符串 拿到之后再转成对象。
如果一进来 获取token 也可以单独走h5这边获取token的接口.
window['getToke']=function getToke(msg){
var data =JSON.parse(msg)
}
//main.js
created() {
try{
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;//安卓
var isios = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios苹果
if(isAndroid){
const token = window.Android.getToken()
var data = JSON.parse(token)
}else if(isios){
window.webkit.messageHandlers.getToken.postMessage(null);
}
//app.vue