前端H5与安卓和ios之间通信

简介: 前端H5与安卓和ios之间通信


在一些app场景中,经常看到app里面嵌套H5页面, 安卓和ios提供一个空壳子,方法两者互相调用。上一周就是写H5页面让安卓和ios调用使用,中间传参,接受参数。通过 window.wx 对象调用一些原生 app 的功能。这个H5页面,我用的是vue来写的。用到了vue全家桶。

 

1.调用app方法。

因为安卓和ios不同。需要写一个方法,来判断机型是安卓或者是ios;

function checkDevice() {

// js判断是否是苹果设备
function checkIsAppleDevice() {
    var u = navigator.userAgent,
        app = navigator.appVersion;
    var ios = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
    var iPad = u.indexOf("iPad") > -1;
    var iPhone = u.indexOf("iPhone") > -1 || u.indexOf("Mac") > -1;
    if (ios || iPad || iPhone) {
        return true;
    } else {
        return false;
    }
}
//js判断是否为Android设备
function checkIsAndroidDevice() {
    var u = navigator.userAgent;
    if (u.indexOf("Android") > -1 || u.indexOf("Adr") > -1) {
        return true;
    } else {
        return false;
    }
}

if (checkIsAppleDevice()) {
    return "ios";
} else {
    return "andriod";
}

}
export default checkDevice;
上面写好的,直接拿来用,在你需要的组件中引入就行。在app.vue中引入这个js文件。因为一进来就要获取token值。前提是用户登录了。

获取app传过来的token值。iOSInfo.token这个是ios定义的方法,andriod.token安卓传过来的token。有些功能,需要判断用户是否登录,就是根据app端传来的token值判断,有值就可以进行操作,没有跳动到登录页面,存储方式,测试的时候,安卓和ios不支持localStorage,支持sessionStorage。把得到的值存储到sessionStorage里面就行,然后那个地方需要,就获取一下就行,一般都是在请求接口的时候携带上去。

this.phone = checkDevice();
getAndioOfIOSInfoList() {

  // js判断是否为ios设备
  if (this.phone== "ios") {
    let iOSInfo = JSON.parse(JSON.stringify(window.iOSInfo));

      sessionStorage.setItem("token", iOSInfo.token);

    this.$store.dispatch("getUserId", iOSInfo.userId);
  } else {
    let andriod = JSON.parse(Android.getToken()); //token

      sessionStorage.setItem("token", andriod.token);

    this.$store.dispatch("getUserId", andriod.userId);
  }
}

上面因为和安卓和ios沟通,需要给我返回token和用户信息,我是直接把用户信息存储到vuex,因为每个页面都需要用到用户信息。所以存放到vuex中,方便每个页面使用。
有时候,需要在二级页面进入一级页面的时候,需要监听安卓和ios方法,让他们返回,在这个时候我们只需要监听安卓和ios定义的方法就行。也是需要判断机型。handleGoTo这个是前端自己写的一个返回上一级的方法名。

handleGoTo() {

  //原生返回上一级页面
  if (this.phone == "ios") {
    // ios返回上一级
    webkit.messageHandlers.gotoHomePage.postMessage({});
  } else {
    Android.back(); //安卓方法
  }
},

webkit.messageHandlers.gotoHomePage.postMessage({});监听ios一个方法,gotoHomePage就是ios定义的方法,只需要调用这个放个即可,不需要加上window,默认就是全局的。但是在postMessage一定要传一个空对象即可。
Android.back()安卓的就不需要太麻烦了,很友好,只需要调用安卓给我定义的方法名back()即可。
只要是返回上一级或者跳转登录,注册页面,都可以这样写。只是安卓和ios可能定义方法不同

2.调用H5方法
在一些场景中,需要我们传一些参数给app。让他们调用,这时候就需要app端调用我们的方法,把对应的参数传给他们就行。也是需要判断机型。jumpToPAage就是安卓和ios定义的方法名,名字一样不一样都可以的

 以上都是和安卓和ios在工作中两者之间互相调用的方法,总结一下,方便以后查询使用。

目录
相关文章
|
5天前
|
安全 搜索推荐 Android开发
深入探索Android与iOS的系统架构差异
【10月更文挑战第29天】 在当今的智能手机市场中,Android和iOS无疑是两大主流操作系统。本文旨在深入探讨这两个系统的架构差异,从底层的操作系统设计到用户界面的呈现,以及它们如何影响了开发者和用户的体验。通过对比分析,我们可以更清晰地理解这两种平台的优势与局限,为开发者在选择开发平台时提供有价值的参考,同时也为用户选择设备提供一定的指导。
20 2
|
7天前
|
安全 搜索推荐 Android开发
揭秘安卓与iOS系统的差异:技术深度对比
【10月更文挑战第27天】 本文深入探讨了安卓(Android)与iOS两大移动操作系统的技术特点和用户体验差异。通过对比两者的系统架构、应用生态、用户界面、安全性等方面,揭示了为何这两种系统能够在市场中各占一席之地,并为用户提供不同的选择。文章旨在为读者提供一个全面的视角,理解两种系统的优势与局限,从而更好地根据自己的需求做出选择。
20 2
|
8天前
|
存储 搜索推荐 Android开发
安卓与iOS的较量:谁更胜一筹?
在当今智能手机市场中,安卓和iOS无疑是两大主流操作系统。它们各自拥有独特的优势和特点,吸引了大量用户。本文将从技术、用户体验、生态系统等方面对比分析安卓和iOS,以期为大家提供一个全面的认识。
|
11天前
|
搜索推荐 Android开发 iOS开发
安卓与iOS的较量:选择最适合你的移动操作系统
在智能手机市场上,安卓和iOS一直是两大主流操作系统。本文将深入探讨这两个系统的优缺点,帮助你根据自己的需求做出最佳选择。
|
13天前
|
人工智能 Linux vr&ar
安卓与iOS的较量:一场永无止境的技术革新
【10月更文挑战第20天】 在移动操作系统的世界里,安卓和iOS一直是两大巨头,它们分别代表了开放与封闭、多样性与统一性的两种截然不同的哲学。本文将深入探讨这两个系统的起源、发展以及它们如何在不断的技术革新中保持竞争力,同时分析用户对它们的不同偏好背后的原因。
|
8天前
|
搜索推荐 安全 Android开发
安卓与iOS的对决:选择最适合你的操作系统
【10月更文挑战第26天】 在当今数字化时代,智能手机已成为我们生活中不可或缺的一部分。而在众多手机品牌中,安卓和iOS无疑是最受欢迎的两大操作系统。本文将深入探讨安卓和iOS的特点、优缺点以及适用场景,帮助你更好地了解这两个操作系统,从而做出更明智的选择。
11 1
|
12天前
|
搜索推荐 Android开发 iOS开发
安卓vs. iOS:操作系统的终极对决####
本文探讨了安卓和iOS两种主流移动操作系统的特点,从用户体验、系统生态、硬件兼容性等维度进行对比分析。通过深入浅出的方式,揭示了两者在技术层面的优劣及未来发展趋势,旨在帮助用户更好地理解并选择适合自己的平台。 ####
|
12天前
|
安全 搜索推荐 Android开发
Android vs. iOS:解锁智能手机操作系统的奥秘####
【10月更文挑战第21天】 在当今这个数字化时代,智能手机已成为我们生活中不可或缺的伙伴。本文旨在深入浅出地探讨两大主流操作系统——Android与iOS的核心差异、优势及未来趋势,帮助读者更好地理解这两个平台背后的技术哲学和用户体验设计。通过对比分析,揭示它们如何塑造了我们的数字生活方式,并展望未来可能的发展路径。无论您是技术爱好者还是普通用户,这篇文章都将带您走进一个充满创新与可能性的移动世界。 ####
21 3
|
13天前
|
安全 搜索推荐 Android开发
Android vs. iOS:一场永无止境的较量####
在智能手机操作系统领域,Android与iOS犹如两极,各自引领着不同的技术潮流和用户体验哲学。本文深入探讨了这两个平台的发展历程、核心优势、以及它们如何塑造了我们的数字生活,旨在为读者提供一个全面而客观的视角,理解这场持续多年的“战争”背后的真正意义。 ####
|
14天前
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
26 3