vue or h5分享页面 唤起和下载app(苹果和安卓判断 及 微信浏览器和其他浏览器的判断)

题外话: 菜鸡是没有发言权的,导致即使不是前端的锅,也把它变成是你的锅。
哎!!!!!!!!!!!!!

		 首先必须感谢我认识的大佬,一直在帮我解决问题(我关注的那个jamesluozhiwei  这位)

步入正题:
1 。唤起和下载
用的框架 和 参考文档(重要,弄清原理啥的看这个)
1、 https://github.com/suanmei/callapp-lib(框架,写得非常非常非常的详细,感谢这位大佬)
2、https://suanmei.github.io/2018/08/23/h5_call_app/ (H5唤起APP指南,感谢这位大佬)

npm install --save callapp-lib
// 如果是h5的 <script src="https://unpkg.com/callapp-lib@2.1.5/dist/index.umd.min.js"></script>
//appDown 自定义的一个调用这个下载唤起的方法
// 下面这些步骤在 https://github.com/suanmei/callapp-lib 这个框架里面写得很清楚详细,膜拜一下大佬、
// 如何判断是我们这边出错还是苹果安卓出错,直接用 支付宝的scheme alipays:// 测试,支付宝能唤起那就是苹果和安卓那边给的scheme有问题

appDown(){
          const CallApp = require('callapp-lib');
          const option = {
            scheme: {
              protocol: 'alipays://',   // 苹果的scheme
            },
            intent: {
              package: 'com.sanmiao.cssj', // 包名,安卓提供
              scheme: 'alipays://',    // 安卓的scheme
            },
  
            //ios
            appstore: '苹果下载的地址,叫苹果提供',
            //安卓
            yingyongbao: '安卓下载的地址,叫安卓提供',
            fallback: '',  //唤起失败,我是准备跳到安卓下载包
            timeout: 2000,
          };
          const lib = new CallApp(option);
          // 执行唤起app
          lib.open({
            path: '',
          });

        }

2 如何判断 系统 是苹果还是安卓

 			var u = navigator.userAgent;
	          this.isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // true
	          this.isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // true

3 如何判断是 微信浏览器 还是其他浏览器

// 判断 is_weixn()返回的是true还是false
 is_weixn(){
          var ua = navigator.userAgent.toLowerCase();
          if (ua.match(/MicroMessenger/i) == "micromessenger") {
            return true;
          } else {
            return false;
          }
        },

然后说一下我遇到的坑吧:
1 scheme 安卓还是苹果那边给错了,第一次接触这个不知道怎么测试,看文档也是不太明白,测试的scheme参考这个网址里面的,提供了多个scheme
https://suanmei.github.io/2018/08/23/h5_call_app/ (H5唤起APP指南)
如果能唤起 ,就是sheme有错(再次感谢罗大佬!)

2 就是微信浏览器禁止唤起不是和它有合作关系的 app所以只能跳到应用商店(再次感谢罗大佬!)

3 就是关于你在测试环境用的app 和正式环境用的app ,注意scheme 安卓和苹果是否已上传到你需要的环境中! 这个当时也是自己蠢啊,弄了好久,才发现scheme根本没有上传到我需要的环境中!

4 然后就是苹果微信打开 选择浏览器 ==》 会有safari 浏览器什么网址无效啥的,你把当前的浏览器地址复制到另外一个浏览器就不会出现这个问题,感觉可能是和 http 和 https 有关,不过具体没有验证(大佬们请解答,感谢)

热门文章

暂无图片
编程学习 ·

Java 常见校验汇总

1.手机号校验(境内11位) String phontNo="12356772112"; Pattern pattern = Pattern.compile("^((13[0-9])|(14[5,7,9])|(15[0-3,5-9])|(166)|(17[3,5,6,7,8])" + "|(18[0-9])|(19[8,9]))\\d{8}$"); if (!pattern.matcher(para.getPhoneNo()).ma…
暂无图片
编程学习 ·

Python学习:变量

Python 变量类型 变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。变量赋值 Python 中的变量赋…
暂无图片
编程学习 ·

安卓安全那点事

本文旨在对于一个安卓app的安全知识做一个较为泛泛的总结,为开发出更安全的应用提供思路。内容比较粗略,仅起到抛砖引玉的效果,还望大家见谅。Android应用的安全 意义 在维基百科上有一个关于计算机安全的定义: 计算机安全(computer security)是计算机与网络领域的信息安…
暂无图片
编程学习 ·

Spring Boot 整合 Redis

Redis 基于内存进行存储,支持key-value的存储形式,底层是C 基于key-value形式的数据字典,没有数据表的概念,直接用键值对的形式完成数据管理 支持五种数据类型:字符串列表集合有序集合哈希安装Redis 1.下载Redis:https://redis.io/download 2.解压并在本地硬盘人任意位置…
暂无图片
编程学习 ·

Java实训心得一

Java第一次实训 第一次实训任务很简单 一: 编写学生管理系统功能结构图利用xmind编写结构图 图示:二:用Navicat工具创建数据库及表格创建student数据库 2.创建t_colledge表并进行设计,插入数据创建t_status表并进行设计,插入数据创建t_student表并进行设计,插入数据创建t…
暂无图片
编程学习 ·

IDEA常用快捷键或修改为Eclipse快捷键风格

Ctrl + Y 删除当前行 Ctrl + D 复制当前行到下一行 Ctrl + Z 撤销 Alt+Enter 导入包,自动修正 Ctrl+F 查找文本 Ctrl+U 大小写切换 Ctrl+W 选中代码,连续按会扩大范围 Ctrl+R 替换文本快捷键改为eclipse快捷键风格Ctrl+Alt+S 或者打开File选择Settings这就完成了
暂无图片
编程学习 ·

STM32G031K LL库的使用 - IIC

说明:驱动基于STm32G031K6,其他型号需自行做改动。注:因为之前项目暂未用到LL库的IIC,所以此驱动未经过实机验证。欢迎反馈使用中的问题。IIC的初始化: CubeMX生成void STM32LLI2C1_Init(void) {LL_I2C_InitTypeDef I2C_InitStruct = {0};LL_GPIO_InitTypeDef GPIO_InitSt…
暂无图片
编程学习 ·

js队列实现优先级插入的方法

队列是先进先出.在医院中排队的时候就是一个队列,最先排队的人,会先获得医生的治疗,这就是先进先出的队列但是也有例外,当医院来了一位急救病人的时候,这个队列就需要做一些改进,改为最小优先队列,这样可以让急救病人首先获得医生的救治,从而保住性命.现在用js来实现一个优先队…
暂无图片
编程学习 ·

Andoid服务(Service)

Android服务(Service) 服务是一个后台运行的组件,执行长时间运行且不需要用户交互的任务。应用被销毁时也依然可以工作服务的两种状态:started:通过startServer()启动的服务,一旦启动,服务可以在后台一直运行 bound:通过bindServer()绑定的服务,Bound状态的服务,提供…
暂无图片
编程学习 ·

51小项目——使用proteus搭建简易的光照度计-(1)

总述 本项目基于51单片机,实现了对光敏电阻两端电压信号的简单获取,并通过数码管显示,蜂鸣器可以根据电压信号的大小发出不同间隔的声音。 注意: 由于疫情原因限制,无法返校制作实物,故本项目仅在proteus中完成了仿真,未能完成实物制作,仿真结果可能与实物结果不符 介绍…
暂无图片
编程学习 ·

IntelliJ IDEA中使用markdown画流程图

安装 Scene Builder下载安装:https://gluonhq.com/products/scene-builder/ 中 Download Scene Builder for Java 8IntelliJ IDEA -> Preferences -> Languages and Frameworks -> JavaFX 中的 "Path to SceneBuilder" 设置为 "/Applications/SceneBu…
暂无图片
编程学习 ·

STM32CubeMX5.6.1生成的代码无启动文件

丢失启动文件 使用这个版本的CubeMX,生成的代码里面没有对应的启动文件。编译报错 展开图片,在Drivers/CMSIS文件夹下面,没有启动文件。编译不通过,报错No section matches selector - no section to be FIRST/LAST。//------------------------------------------ 解决方法…
暂无图片
编程学习 ·

MySQL数据类型(最大值和最小值--类型定义的值)

MySQL数据类型定义的值:1、整型MySQL数据类型含义(有符号)tinyint(m)1个字节 范围(-128~127)smallint(m)2个字节 范围(-32768~32767)mediumint(m)3个字节 范围(-8388608~8388607)int(m)4个字节 范围(-2147483648~2147483647)bigint(m)8个字节 范围(+-9.22*10的18次方)取…
暂无图片
编程学习 ·

git使用(二)部署本地项目到github

部署本地项目到github 初始化 打开Git Bash。 cd到项目文件夹。(直接把文件夹拖入到bash内即可) 执行初始化代码 git init项目文件夹会产生一个.git的文件夹 跟github仓库进行连接 格式:git remote add origin url地址(https或ssh)例如:git remote add origin git@github…
暂无图片
编程学习 ·

程序媛审美测评——控制台256种颜色搭配及控制台改变界面颜色的方法

改变控制台颜色的方法+程序媛审美色调推荐前言改变颜色der方法程序媛颜色审美测评初筛42种搭配复试4种出挑 前言 C语言小学期做大作业,感觉黑底白字略显单调,想换个颜色change一下枯燥的程序(然并卵)。对,前景和背景色各16种,笔者挨个测过去,一共测了256次。在此过程中,…
暂无图片
编程学习 ·

网上书城前端界面设计

网上书城界面设计前言界面设计首页登录注册书籍搜索购物车代码实现总结 前言 接着我的上一篇博客来,今天为大家分享的内容是网上书城项目的界面设计以及代码分析 网上书城项目需求分析、功能划分、数据库表设计、工具类介绍 界面设计 首页首页的话,主要涉及到了BootStrap的相…
暂无图片
编程学习 ·

在使用R和Rstdio的常见问题

在Rstdio里无法画图有两种方法:一是使用代码 dev.new() 新建一个绘图窗口(我觉得这个方法好,因为在我的plots窗口画出来的图比例是变形的);二是换一个系统缓存目录,详细教程可以自行在网上寻找。在R里无法安装包可以像上面的方法二一样,换个缓存目录,或者在缓存目录里找…
暂无图片
编程学习 ·

ESP32使用MicroPython快速开发

Python基本语句一:Print语句:1. 输出字符串和数字>>>print("runoob") # 输出字符串runoob>>> print(100) # 输出数字100>>> str = runoob>>> print(str) # 输出变量runoob>>> L = [1,2,a] …
暂无图片
编程学习 ·

内网渗透 -- 获取内网浏览器历史记录等相关信息

“我喜欢你,做我女朋友可以吗?”电话的那头没有反应,男生沉不住气了,小心翼翼地问着,“你在干嘛呀?”“我在点头。”---- 网易云热评环境:小攻:Kali 2020,ip:192.168.1.133小受:win7 x86,ip:192.168.1.137一、生成木马及监听主机参考上篇文章:二、获取浏览器历史…