uniapp H5唤起手机App 中间下载页

news2024/10/5 22:24:55

我这里直接是打开中间下载页,在下载页判断手机是否已存在App,有则唤起App,没有则可点击下载按钮下载app。

唤起App的关键语句是:window.location.href =  scheme 

Scheme链接格式样式:
[scheme]://[host]/[path]?[query]

直接放全部代码:

<template>
  <div class="page">
    <div class="container">
      <div class="img-box">
        <img src="@/static/img/logo.png">
      </div>
      <div class="title">xxxApp</div>
      <div v-show="browser.versions.android" class="button" @tap="downloadAndroid">点击下载</div>
      <div v-show="browser.versions.ios" class="button" @tap="downloadIOS">点击下载</div>
    </div>
    <div class="cover">
      <div class="cover-content">
        <div class="cover-text">
          <div>请点击右上角按钮</div>
          <div>选择“在浏览器打开”来下载</div>
        </div>
        <div class="cover-img">
          <img src="@/static/img/download.png" alt="">
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import config from "@/config/config"
export default {
  data(){
    return{
      config,
      cover: '',
      browser: '',
      id: ''
    }
  },
  onLoad(val){
    this.id = val.id
  },
  onShow(){
    this.init()
  },
  methods: {
    init(){
      this.$nextTick(()=>{
        this.cover = document.querySelector(".cover");
        this.isWeixin();
      });
      this.browser = {
        versions: (function () {
          var u = navigator.userAgent,
            app = navigator.appVersion;
          return {
            trident: u.indexOf("Trident") > -1, //IE内核
            presto: u.indexOf("Presto") > -1, //opera内核
            webKit: u.indexOf("AppleWebKit") > -1, //苹果、谷歌内核
            gecko: u.indexOf("Gecko") > -1 && u.indexOf("KHTML") == -1, //火狐内核
            mobile:
              !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端
            ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
            android: u.indexOf("Android") > -1 || u.indexOf("Linux") > -1, //android终端或者uc浏览器
            iPhone: u.indexOf("iPhone") > -1 || u.indexOf("Mac") > -1, //是否为iPhone或者QQHD浏览器
            iPad: u.indexOf("iPad") > -1, //是否iPad
            webApp: u.indexOf("Safari") == -1, //是否web应该程序,没有头部与底部
            weixin: u.match(/(MicroMessenger)/i), // 是否微信内打开
          };
        })(),
      };
      // console.log('this.browser', this.browser);
      if (this.browser.versions.ios) {
        window.open(config.downloadIOSLink, "_blank");
      }
      this.openApp()
    },
    /**
     * 打开app 仅在h5生效 使用ifream唤醒app
     */
    openApp() {
      let t = `${config.schemeLink}`;
      if(this.id){  
        // 如果需要跳转到其他H5页面,可以在这里修改一下
        t = `${config.schemeLink}pages/mine/myContacts?id=${this.id}`
      }
      try {
        var e = navigator.userAgent.toLowerCase(),
          n = e.match(/cpu iphone os (.*?) like mac os/);
        if (
          ((n = null !== n ? n[1].replace(/_/g, ".") : 0), parseInt(n) >= 9)
        ) {
          window.location.href = t;
        } else {
          var r = document.createElement("iframe");
          (r.src = t), (r.style.display = "none"), document.body.appendChild(r);
        }
      } catch (e) {
        window.location.href = t;
      }
    },
    isWeixin() {
      if (this.browser.versions.weixin) {
        this.cover.style.display = "block";
        return;
      }
    },
    showOrHide() {
      this.cover.style.display = "none";
    },
    downloadAndroid(){
      this.isWeixin();
      window.open(config.downloadAndroidLink, "_blank")
    },
    downloadIOS(){
      this.isWeixin();
      window.open(config.downloadIOSLink, "_blank");
    },
  }
}
</script>

<style lang="scss" scoped>
uni-page-body{
  height: 100%;
}
.page{
  margin: 0;
  padding: 0;
  height: 100%;
  width: 100%;
  background-image: linear-gradient(180deg, #37A60A, #72CF2B);
  position: relative;
  overflow: hidden;
  .container{
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    position: absolute;
    bottom: 500rpx;
    .img-box{
      width: 260rpx;
      img{
        width: 100%;
      }
    }
    .title{
      font-weight: bold;
      font-size: 30px;
      color: #ffffff;
      margin: 40rpx 0 160rpx 0;
    }
    .button{
      width: calc(100% - 80rpx);
      height: 90rpx;
      margin: 20rpx 30rpx;
      border: none;
      outline: none;
      color: #37A60A;
      background-color: #fff;
      border-radius: 90rpx;
      line-height: 90rpx;
      font-size: 18px;
      text-align: center;
      &:hover, &:focus, &:active{
        box-shadow: 1px 3px 12px rgba(0, 0, 0, 0.3);
      }
    }
  }
  .cover{
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    position: fixed;
    top: 0;
    left: 0;
    z-index: 10;
    display: none;
    .cover-content {
      width: 100%;
      height: 70px;
      background-color: #eeeeee;
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0 15px;
      box-sizing: border-box;
      .cover-text{
        color: #5f5d5d;
        font-size: 14px;
      }
      .cover-img img{
        width: 40px;
        height: 40px;
      }
    }
  }
}
</style>

其中:

上述代码中的schemeLink:xxxApp://

Android和ios的下载链接:一个放的apk安装包,一个是跳转到AppStore的

效果如下: 

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1456784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Backend - Django SimpleUI(美化 Django Admin )

目录 一、作用 二、安装 & 配置 &#xff08;一&#xff09;安装依赖 &#xff08;二&#xff09;配置 &#xff08;三&#xff09;运行 三、基础设定 &#xff08;一&#xff09;创建用户 &#xff08;二&#xff09;设置标题 &#xff08;三&#xff09;设置登录…

算法刷题:找到字符串中所有的字母异位词

找到字符串中所有的字母异位词 .题目链接题目详情题目解析算法原理滑动窗口流程图定义指针及变量进窗口判断出窗口更新结果 我的答案 . 题目链接 找到字符串中所有的字母异位词 题目详情 题目解析 所谓的异位词,就是一个单词中的字母,打乱顺序,重新排列得到的单词 如:abc-&g…

爬虫入门一

文章目录 一、什么是爬虫&#xff1f;二、爬虫基本流程三、requests模块介绍四、requests模块发送Get请求五、Get请求携带参数六、携带请求头七、发送post请求八、携带cookie方式一&#xff1a;放在请求头中方式二&#xff1a;放在cookie参数中 九、post请求携带参数十、模拟登…

使用IDEA配置GO的开发环境备忘录

1. 安装GO 1.1 下载&安装 进入GO的官网下载对应的GO&#xff0c;本人环境为mac选择最新的1.22.0版本&#xff0c;在本地安装即可 1.2 配置相关环境变量 修改~/.bash_profile&#xff0c;添加如下的配置 GOPATH/Users/kevin/go/src GOBIN/Users/kevin/go/go/bin GOROOT/…

【Redis快速入门】深入解读哨兵模式

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

贪心算法之合并区间

“任世界多宽广&#xff0c;停泊在这港口~” 区间问题&#xff0c;涉及到最多的就是 取交集 和 并集的概念。我们使用C排序算法后&#xff0c;其默认规则就是按照 “左排序”进行的。因而&#xff0c;我们实质上注意的是每一个区间的 右端点&#xff0c;根据题目要求&#xff…

如何使用Docker部署Drupal并结合cpolar实现固定公网地址访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS&#xff0c;适用于各种不同的网站项目&#xff0c;从小型个人博客到大型企业级门户网站。它的学习…

C++ Webserver从零开始:配置环境(九)——下载github的项目进行测试

前言 大家好&#xff0c;我又来更新Webserver的博客了。上一次更新这个专栏时2024.2.5号&#xff0c;离现在已经13天了。非常抱歉&#xff0c;中间隔了那么久。一方面是基础知识学完之后&#xff0c;就要开始自己写代码了。看基础知识和写代码是两回事&#xff0c;理论和实践的…

Python Selenium实现自动化测试及Chrome驱动使用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 ​编辑 前言 Selenium简介 安装Selenium库 编写自动化测试脚本 1 打开浏览器并访问网页 2 查找页面元…

如何低成本实现商场室内导航地图制作

商场地图导航可提升顾客服务体验&#xff0c;促进商场信息化建设。蜂鸟视图提供两种低成本的商场导航实现方式&#xff0c;以满足不同需求。 一、模拟导航 用户可选用“模拟导航”&#xff1a;将商场CAD图纸导入蜂鸟视图地图编辑器&#xff0c;通过简单操作生成室内3D地图&…

深入理解 Vue3 中的 setup 函数

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

迁移SVN和GIT的云端数据

在新服务器搭建GIT仓库 教程很多&#xff0c;大致的流程是&#xff1a; 1. 新建linux用户密码专用于git操作 2. 新建git库的存放文件夹并在此初始化git 3. 配置git库所在目录权限 *只需要有一个库和有一个用户&#xff0c;与在windows上建库是一样的。不需要搭建类似gitla…

一文彻底搞懂什么是类加载器

文章目录 1. 类加载器简介2. 类加载器的种类3. 类加载执行过程3.1 加载3.2 验证3.3 准备3.4 解析3.5 初始化3.6 使用3.7 卸载 1. 类加载器简介 类加载器&#xff08;Class Loader&#xff09;是 Java 虚拟机&#xff08;JVM&#xff09;的一部分&#xff0c;JVM只会运行二进制…

C语言------一种思路解决实际问题

1.比赛名次问题 ABCDE参加比赛&#xff0c;那么每个人的名次都有5种可能&#xff0c;即1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff1b; int main() {int a 0;int b 0;int c 0;int d 0;int e 0;for (a 1; a < 5; a){for (b 1; b < 5; b){for…

树和堆的精讲

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

(简易部署)恒创科技「幻兽帕鲁香港游戏服务器」搭建教程

近期&#xff0c;作为一款主打多人游戏模式的全新开放世界生存制作游戏——《幻兽帕鲁》(Palworld) &#xff0c;可谓“高效出圈”&#xff0c;自 2024 年 1 月 19 日在 Steam 平台发售抢先试玩版后&#xff0c;短短两个星期&#xff0c;幻兽帕鲁 steam 在线峰值已突破 200 万&…

23.java-日志框架

日志框架 介绍 : 程序中的日志可以用来记录程序运行过程中的信息&#xff0c;并可以进行永久存储。 生活中的日志&#xff1a; 生活中的日志就好比日记&#xff0c;可以记录你生活的点点滴滴。 引入 : 目前输出语句的弊端 : 信息只能展示在控制台不能将其记录到其他的位置&a…

Caddy 自动HTTPS 反向代理、重定向、静态页面 - docker版

简介 Caddy 是一个通用的、易于使用的 Web 服务器&#xff0c;具有以下特点&#xff1a; 快速: Caddy 使用 Go 语言编写&#xff0c;以高性能著称。 安全: Caddy 支持 HTTPS、自动证书生成、HTTP/2 等安全功能。 易用: Caddy 的配置文件简单易懂&#xff0c;易于配置。 功能丰…

代码随想录刷题笔记-Day19

1. 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝…