h5页面用js判断机型是安卓还是ios,判断有app安装没app跳转应用商店app stroe或者安卓应用商店

用vue3写的wep页面。亲测好使。
疑惑:
微信跳转和浏览器跳转不一样,需要控制定时器的时间,android在没下载的情况下点击没反应,ios在没下载的情况下会跳404,就是定时器2000,不知道有没有别的办法,用iframe嵌套ios的跳转在没下载的情况下是404,2000是刚好的时间点,有点刚刚好,不是特别完美。有大佬会的可以交流。

<template>
  <div>
    <div class="bottom_button">
      <div class="downloadapp" @click="downloadApp">下载客户端</div>
      <div class="openapp" @click="openApp">已下载APP 立即打开</div>
    </div>
  </div>
</template>
<script setup>
  onMounted(function() {
  	// 禁止图片滚动
    document.addEventListener('touchmove', function(e) {
      e.preventDefault();
    }, { passive: false });
    isWeiXinLogin();
  })
  // 微信打开还是普通浏览器打开
  const isWeiXinLogin = () => {
	var ua = window.navigator.userAgent.toLowerCase();
	if (ua.match(/MicroMessenger/i) == 'micromessenger') {
      return true; // 微信中打开
    } else {
      return false; // 普通浏览器中打开
    }
};
  // 检测是哪个客户端
  const detectDevice = () => {
    /**
     * navigator.userAgent用户浏览器相关信息的只读属性
     * window.opera JavaScript语言,是opera5开始有的一个脚本object,一个boolean的值,用来检察浏览器是否是opera
     */
    var userAgent = navigator.userAgent || navigator.vendor || window.opera;
    if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {
      return 'iOS';
    } else if (userAgent.match(/Android/i)) {
      return 'Android';
    } else {
      return 'unknown';
    };
  };
  // 打开app
  const openApp = () => {
    let deviceType = detectDevice();
    if (deviceType === 'Android' && !isWeiXinLogin()) {
      console.log(isWeiXinLogin(), '123');
      console.log('安卓用户在没安装的情况下点击没反应,有的话在跳转');
      try {
        const appURL = ""; // 替换成你的应用的URL Scheme或Universal Link
        window.location.href = appURL;
      } catch (error) {
        // 如果捕获到错误,通常意味着应用没有安装
        console.error("应用未安装或无法打开", error);
        downloadApp();
      }
    } else {
      alert('请点击右上角按钮,在菜单中通过浏览器打开,即可打开');
    }
    if (deviceType === 'iOS') {
      console.log('苹果用户,在没安装的情况下会跳转到一个404页面。需要做一个处理');
      const appURL = "跳转地址"; // 替换成你的应用的URL Scheme或Universal Link
      let loadDateTime = new Date();
      window.setTimeout(function() {
        let timeOutDateTime = new Date();
        console.log(timeOutDateTime, 'timeOutDateTime', timeOutDateTime - loadDateTime < 5000, timeOutDateTime - loadDateTime);
        if (timeOutDateTime - loadDateTime < 5000) {
          downloadApp();
        } else {
          window.close();
        }
      }, 2000);
      window.location = appURL;
    }
  };
  // 下载app
  const downloadApp = () => {
    let deviceType = detectDevice();
    if (deviceType === 'Android' && !isWeiXinLogin()) {
      const downloadURL = "";
      window.location = downloadURL;
    } else {
      alert('请点击右上角按钮,在菜单中通过浏览器打开,即可安装');
    }
    if (deviceType === 'iOS') {
      // 跳转到应用商店下载应用的URL
      const downloadURL = ""; // 替换成你的应用下载链接
      window.location = downloadURL;
    } else {
      console.log('其他');
    }
  }
</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放学别走啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值