uniApp实现h5页面唤醒app

如果想app跳app看这篇文章:app跳转app

说一下最近公司的需求

公司目前需要后台向每个用户发送一个带链接的短信,然后点击链接唤醒app。

注意

  1. app配置ios,androi。app记得打包
  2. h5需要window.location.href进入

逻辑

当用户点击链接进入h5页面,然后再h5,之后h5页面判断手机有没有某款app(我开发的时候自己公司的app),有的话直接唤醒app,没有的话进入应用市场下载。

我们后端小哥哥给我一个app下载链接,安卓进入应用宝下载,苹果进入appStore进行下载,苹果手机有app的话appStore就会显示打开。我也不知道这个链接他是怎么实现的,因为我目前不懂后端的开发,这个链接会自动判断我的手机是安卓还是苹果。

苹果手机是直接跳转appStore打开和下载!!!!!!!!!!不能通过schemes去打开
原因是:当你苹果手机没有这款app,苹果浏览器(safari浏览器)会显示‘safar浏览器打不开该网页因为网址无效’的弹出框

因为我是前端,我就总结一下前端怎么实现的吧,我们公司使用的是uniApp的。

首先配置app

因为我们的app是用uniapp开发的,我先说配置app,首先设置了,h5才能去打开自己公司的app配置分为androidios

  1. 先进入manifest.json----源码视图----app-plus----distribute,找到androidios
  2. 先配置android,增加一个schemes,这个安卓就能访问你的app了
    官方解释
    在这里插入图片描述
  3. 然后配置ios,ios配置跟android不一样,ios需要配置一个白名单,这样才能唤醒你的app
    官方解释
    官方解释白名单在这里插入图片描述
  4. 配置好一定要打基座,不然测试没用,上线正常打正式包

现在我们来说说h5页面怎么去唤醒app了

我的h5是用uniapp去打包成h5
在这里插入图片描述

  1. 配置h5的白名单,ios才能去跳转app,白名单写的是app的urlschemes
    找到manifest.json----源码视图----app-plus----distribute----ios(ios需要设置一下,android不用)
    在这里插入图片描述

  2. 首先兼容(通用)

	// 兼容var 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.*/),/*是否为移动终端*/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,/*是否为iPhone或者QQHD浏览器*/iPad: u.indexOf('iPad') > -1,/*是否iPad*/webApp: u.indexOf('Safari') == -1,/*是否web应该程序,没有头部与底部*/souyue: u.indexOf('souyue') > -1,superapp: u.indexOf('superapp') > -1,weixin: u.toLowerCase().indexOf('micromessenger') > -1,Safari: u.indexOf('Safari') > -1};}(),language: (navigator.browserLanguage || navigator.language).toLowerCase()};
  1. 然后去唤醒app,苹果手机直接进入appStore打开和下载
		if (browser.versions.ios) {window.location.href = "https://a.app.qq.com/o/simple.jsp?pkgname=xxxx";} else if (browser.versions.android) {window.location.href = "wswl://";}
  1. 唤醒不起来就说明,你手机没有,然后去下载,
    这是后端给我下载地址
if (browser.versions.android) {window.location.href = "https://a.app.qq.com/o/simple.jsp?pkgname=xxx;
}

h5记得部署到服务器在测,或者uniapp内置浏览器,我部署到服务器在测的
这样就实现了,虽然我弄了几天,因为没做过,掉坑很多

完整代码

<template><view class="btnWrap"><view class="btn" @click="handleBtnDlown">立即下载</view></view></view>
</template><script>// 兼容var 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.*/),/*是否为移动终端*/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,/*是否为iPhone或者QQHD浏览器*/iPad: u.indexOf('iPad') > -1,/*是否iPad*/webApp: u.indexOf('Safari') == -1,/*是否web应该程序,没有头部与底部*/souyue: u.indexOf('souyue') > -1,superapp: u.indexOf('superapp') > -1,weixin: u.toLowerCase().indexOf('micromessenger') > -1,Safari: u.indexOf('Safari') > -1};}(),language: (navigator.browserLanguage || navigator.language).toLowerCase()};export default {data() {return {}},onLoad() {//页面初始化进入app,进不去就说明没安装app,然后可以点击下载去应用市场去下载if (browser.versions.ios) {window.location.href = "https://a.app.qq.com/o/simple.jsp?pkgname=xxx"; //问后端小哥哥要这个链接} else if (browser.versions.android) {window.location.href = "wswl://";  //这是刚刚app配置的}},methods: {// 下载apphandleBtnDlown() {if (browser.versions.android) {window.location.href = "https://a.app.qq.com/o/simple.jsp?pkgname=xxx;}}}}
</script>

首先,短信的链接点开是用手机自带浏览器打开,所以我没做什么兼容其他的浏览器。
360浏览器,搜狗浏览器进入h5会提示你打开app。
qq浏览器,uc浏览器需要去点击打开
百度浏览器啥都不行

因为我们公司不需要这样兼容,我就没做,你们公司需要就自己做一下,做完留言借我看一下,哈哈

反正我是这样做出来,你们没做出来的话,肯定哪里代码错了,反正不能怪我,我就这样实现的。
新手,勿喷,有用就点赞+关注+收藏

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

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

相关文章

app采集的10个经典方法

app采集的抓取数据、app抓包、网页爬虫、采集网站数据、app数据采集软件、python爬虫、HTM网页提取、APP数据抓包、APP数据采集、一站式网站采集技术、BI数据的数据分析、数据标注等成为大数据发展中的热门技术关键词。那么app采集数据的方法有哪些呢&#xff1f;我给大家分享一…

辣椒app软件测试,testflight辣椒视频APP

辣椒视频test flight其实是一款关于系统类型的工具软件&#xff0c;看起来很像是影视播放器但其实并不是。testflight辣椒视频最近非常的红包&#xff0c;不少的小伙伴都想要知道辣椒视频test flight邀请码、兑换码&#xff0c;一起来看看吧~ 辣椒视频test flight简介 testflig…

app反编译

在进行安卓开发或者爬虫开发过程中&#xff0c;偶尔会遇到需要将app进行反编译分析参考源码的需求&#xff0c;接下来&#xff0c;笔者将自己实践过程记录下来&#xff0c;給需要的朋友一个参考。仅供学习之用&#xff0c;勿做坏事儿&#xff0c;哈哈哈&#xff01; 准备工作&…

这些旅行必备APP,你知道几个?

虽说疫情还在继续&#xff0c;但是有时候我们仍然会控制不住自己想要旅游想要呼吸其他地方空气的心情。在了解知悉目的地的防疫政策并做好充足的防疫准备后&#xff0c;我们不妨来一场告别已久的旅行。但在旅行前&#xff0c;请先马住这些旅游必备app。 1.穷游行程助手 行程攻…

APP启动流程解析

前言 当我们点击手机屏幕上的软件图标时&#xff0c;就可以打开这个软件&#xff0c;看似很简单的过程其实包含了许多的底层交互&#xff0c;看了还不明白&#xff0c;欢迎来打我。 一 . 启动流程简介 首先要知道的是&#xff0c;手机屏幕其实就是一个Activity&#xff0c;我…

uniapp实现app跳转app

需要H5唤醒App看这篇文章&#xff1a;H5唤醒App 需求&#xff1a;公司的app跳转公司的另一个app 注意看注释&#xff01;&#xff01;&#xff01; 注意看注释&#xff01;&#xff01;&#xff01; 注意看注释&#xff01;&#xff01;&#xff01; 如何实现呢&#xff0c;…

【Spring】— 动态SQL :<if>元素

动态SQL &#xff1a;元素 在MyBatis中&#xff0c;<if>元素是常用的判断语句&#xff0c;主要用于实现某些简单的条件选择。在实际应用中&#xff0c;我们可能会通过多个条件来精确地查询某个数据。 【示例8-1】下面通过一个具体的案例来演示元素的使用。 &#xff0…

数组及详解冒泡排序

数组及详解冒泡排序 一维数组的创建和初始化一维数组的创建一维数组的初始化一维数组的应用一维数组在内存中的存储 二维数组的创建和初始化二维数组的创建二维数组的初始化二维数组的应用二维数组在内存中的存储 数组越界问题数组作为函数参数数组名的含义及特殊两个例子 冒泡…

chatgpt赋能python:Python中累乘的作用和用法

Python中累乘的作用和用法 在Python编程语言中&#xff0c;累乘指的是连续乘法&#xff0c;或者说是一系列数字的乘积。累乘的概念非常简单&#xff0c;但是实际上它在编程中有着广泛的应用。 累乘在Python中的实现方式 Python中&#xff0c;累乘可以通过多种方式来实现&…

25条关于人生感悟的经典句子

1.活得糊涂的人&#xff0c;容易幸福&#xff1b;活得清醒的人&#xff0c;容易烦恼。这是因为&#xff0c;清醒的人看得太真切&#xff0c;一较真&#xff0c;生活中便烦恼遍地&#xff1b;而糊涂的人&#xff0c;计较得少&#xff0c;虽然活得简单粗糙&#xff0c;却因此觅得…

佛家经典禅语语录句子

【1】&#xff1a;在天地之间觅得一方安详&#xff0c;听风雨&#xff0c;听山语&#xff0c;听禅语。 【2】&#xff1a;心是一方砚&#xff0c;不空亦不满。眼是一片天&#xff0c;不奢亦不贪。字是一盘餐&#xff0c;不腻亦不淡。深邃梅婷花向晚&#xff0c;零落幻影墨里寒。…

知足常乐--每日十问

如果你想走出常规&#xff0c;放松心情&#xff0c;以积极的的心态开始新的一天&#xff0c;那就很有必要以自问的方式开始一天&#xff0c;这些问题会给我们带来力量和好心情. 1、我拥有什么&#xff1f; 通常我们会为自己没有的东西而苦恼&#xff0c;却看不到自己拥有的&…

chatgpt赋能python:Python中的“5“+“5“:了解运算符重载和字符串拼接

Python中的 “5”“5”: 了解运算符重载和字符串拼接 Python中的运算符重载允许我们自定义类型的操作符行为。当我们使用加号运算符将两个对象相加时&#xff0c;Python会动态地确定该使用哪种类型的操作符行为。在使用字符串时&#xff0c;加号可以用于字符串的连接&#xff…

chatgpt赋能python:Python中的提取函数——数据清洗中必不可少的利器

Python中的提取函数——数据清洗中必不可少的利器 数据清洗是数据分析过程中不可或缺的一步&#xff0c;而Python中的提取函数则是数据清洗中必不可少的利器。本文将重点介绍一些Python中常用的提取函数&#xff0c;以帮助数据分析师更好地应对实际问题。 什么是提取函数&…

chatgpt赋能python:Python中的“或”语句:使用方法和示例

Python中的“或”语句&#xff1a;使用方法和示例 在Python编程中&#xff0c;“或"语句表示为"or”&#xff0c;它是逻辑运算符的一种形式。"或"语句可以用于组合两个或多个条件&#xff0c;只要其中一个条件成立&#xff0c;整个语句就会返回True。在本…

css3和h5的新特性

H5的新特性 1. 用于绘画 canvas 元素。 2. 用于媒介回放的 video 和 audio 元素。 3. 本地离线存储 localStorage 长期存储数据&#xff0c;浏览器关闭后数据不丢失&#xff1b; sessionStorage 的数据在浏览器关闭后自动删除。 4. 语意化更好的内容元素&#xf…

六、H5新特性

文章目录 一、H5的兼容二、H5新增特性2.1 语义化标签2.2 增强表单2.3 音频、视频 一、H5的兼容 支持 HTML5的浏览器包括Firefox(火狐浏览器)&#xff0c;IE9及其更高版本&#xff0c;Chrome(谷歌浏览器)&#xff0c;Safari,Opera等&#xff0c;国内的遨游浏览器&#xff0c;以…

h5简介和新特性

h5简介和新特性 语义化标签表单新增的type属性表单元素的其他属性新增的表单元素&#xff0c;datalisth5新增表单事件meter标签fieldset标签和legend标签自定义属性规范全屏接口上传图片实时预览进度条参考手册 学习资源推荐 https://blog.csdn.net/qq_42813491/article/detai…

最详细H5新特性

1. 语义化标签 &#xff08;1&#xff09;比如&#xff1a;header、conent、footer、aside、nav、section、article等语义化标签。 &#xff08;2&#xff09;语义化标签的好处&#xff1a;结构清楚&#xff0c;易于阅读&#xff0c;可维护性更高&#xff0c;有利于SEO的优化…

H5新增了哪些新特性

目录 前言 1.语义化标签 2.form表单增强 3.视频和音频 4.Canvas绘图 5.SVG绘图 6.地理位置定位&#xff08;Geolocation API &#xff09; 7.拖放API 8.Web Worker 9.Web Storage 10.Web Socket 总结 前言 本期为大家总结面试时常被问到的一个问题&#xff0c;那就…