1. 在阅读本文之前你首先应该对js有基本对掌握,并且对Schemeintent有一定的理解。更多的是代码

上午给朋友做了一个产品引导页,但是需要判断ios系统的TestFlight是否安装,进行了google一下发现了callapp-lib库

很有效的解决了这个问题,但是并不是很完美,我也没有找到很完美的解决这个问题,包括我在本文所说的,只是一种很不入流的方式,但是还是有效的,

兼容情况就不说了,不考虑~,主要是就是唤醒你需要的软件。

  1. callapp-lib这里利用了别人的库,可以省略部分代码,`callapp-lib`可以直接唤醒app,以及唤醒失败的`callback`,但是你得传入Scheme
  2.  
  3. `callapp-lib`库可能有一点问题,我也没有理解透彻,它并不给你提供唤醒成功`callback`的功能,所以需要我们自己补足。
    文档:callapp-lib
  1. import CallApp from 'callapp-lib'
  2. const option = {
  3. scheme: {
  4. protocol: 'itms-beta',
  5. },
  6. outChain: {
  7. protocol: 'itms-beta',
  8. path: '',
  9. },
  10. appstore: 'http://www.apple.com',
  11. yingyongbao: 'http://www.zhihu.com',
  12. fallback: 'https://www.baidu.com',
  13. timeout: 3000,
  14. };
  15. const lib = new CallApp(option);
  16. const callButton = document.querySelector('#call-button');
  17. callButton.addEventListener('click', () => {
  18. vm.is_show = 1
  19. this.$toast.loading({
  20. mask: true,
  21. message: '加载中...'
  22. });
  23. lib.open({
  24. path: '/text',
  25. callback: function () {
  26. vm.is_show = 0
  27. self.$toast.fail('打开TestFlight失败,请先下载支持软件TestFlight');
  28. return false
  29. },
  30.  
  31. });
  32. });

  

  1.  
  2. 检测网页是否被切到后台运行,并监听该事件
    `is_show` 是为了阻止重复加载
    APP 如果被唤起的话,页面就会进入后台运行,会触发页面的 visibilitychange 事件。如果触发了,则表明页面被成功唤起,支持callback,如果失败的话就会触发前面`callapp-lib`我们传入的失败callback
  1. var hidden, state, visibilityChange;
  2. if (typeof document.hidden !== "undefined") {
  3. hidden = "hidden";
  4. visibilityChange = "visibilitychange";
  5. state = "visibilityState";
  6. } else if (typeof document.mozHidden !== "undefined") {
  7. hidden = "mozHidden";
  8. visibilityChange = "mozvisibilitychange";
  9. state = "mozVisibilityState";
  10. } else if (typeof document.msHidden !== "undefined") {
  11. hidden = "msHidden";
  12. visibilityChange = "msvisibilitychange";
  13. state = "msVisibilityState";
  14. } else if (typeof document.webkitHidden !== "undefined") {
  15. hidden = "webkitHidden";
  16. visibilityChange = "webkitvisibilitychange";
  17. state = "webkitVisibilityState";
  18. }
  19. document.addEventListener(visibilityChange, function () {
  20. // eslint-disable-next-line
  21. //这里判断不要重复下载
  22. if (vm.is_show == 1) {
  23. vm.is_show = 0
  24. alert('正在下载');
  25. location.reload()
  26. }
  27.  
  28. }, false);
  1.  
  2. 原创不易,转载请附上原文出处链接,谢谢
    原文链接:https://lihengc.github.io/2019/09/24/H5%E7%BD%91%E9%A1%B5%E5%94%A4%E9%86%92app-%E5%88%A4%E6%96%ADapp%E5%AE%89%E8%A3%85/

H5网页唤醒app,判断app安装的更多相关文章

  1. h5网页跳转到app,若未安装app,则跳转app下载页面

    if(isAndroid){ android(); function android(){ var ifr = document.createElement("iframe"); ...

  2. H5网页应用打包安卓App (全网最详细教程)

    img { box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important } .red { color: rgba(255, 0, 0, 1) } ...

  3. 12、xamarin form中实现H5 网页唤醒微信支付的方法

    在微信的支付中有种支付叫微信H5支付.方便用户在网页中轻松唤起微信进行支付. 当然微信不推荐大家使用这样的方式唤起微信支付.建议app还是使用正常的微信支付sdk即可 服务端与其他的建议参考微信支付官 ...

  4. web页面打开本地app(判断是否安装)

    在应用宝中有APP申请链接: //是否可以打开App不可以跳则到下载页 $(".downNow button").on("click",function(){ ...

  5. 关于APP,原生和H5开发技术的争论 APP开发技术选型判断依据

    关于APP,原生和H5开发技术的争论 App的开发技术,目前流行的两种方式,原生和Html5.原生分了安卓平台和ios平台(还有小众的黑莓.死去的塞班就不说了),H5就是Html5. 目前争论不休的问 ...

  6. 点击页面判断是否安装app并打开,否则跳转app store的方法

    常常有这样的场景,咱们开发出来的APP需要进行推广,比如在页面顶部来一张大Banner图片,亦或一张二维码.但往往我们都是直接给推广图片加了一个下载链接(App Store中的).所以咱们来模拟一下用 ...

  7. 在web浏览器中判断app是否安装并直接打开

    最近公司App产品在运营推广上有一个需求,就是要求可以让用户在访问我们的推广网页时,就可以判断出这个用户手机上是否安装了我们的App,如果安装了则可以直接在网页上打开,否则就引导用户前往下载.从而形成 ...

  8. 【JS】点击页面判断是否安装app并打开,否则跳转下载的方法

    应用场景 App产品在运营推广上有一个需求,就是要求可以让用户在访问我们的推广网页时,就可以判断出这个用户手机上是否安装了我们的App,如果安装了则可以直接在网页上打开,否则就引导用户前往下载.从而形 ...

  9. h5 调起app 如果没安装就跳转下载

    <!doctype html> <html> <head> <title></title> <meta charset="u ...

随机推荐

  1. redis之哨兵集群

    一.主从复制背景问题 Redis主从复制可将主节点数据同步给从节点,从节点此时有两个作用: 一旦主节点宕机,从节点作为主节点的备份可以随时顶上来. 扩展主节点的读能力,分担主节点读压力. 但是问题是: ...

  2. MONGODB 数据库回复备份

    1.导出工具:mongoexport     1.概念:         mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...

  3. java web课程管理系统开发实例(从数据库连接到代码)

    以下是几个简单知识: JavaBean:用于传递数据,拥有与数据相关的逻辑处理 JSP:从Model接收数据并生成HTML Servlet:接收HTTP请求并控制Model和View jdbc:用于配 ...

  4. 2019巅峰极客CTF-web1(LOL英雄联盟)

    今晚有空 以后随缘写博客了 好好沉淀 web1当天做出的队伍很少 其实不难    折腾到最后就差一步  可惜    0x01 读取文件 截图没留了 只留了代码部分. 有个页面  有上传和下载功能 起初 ...

  5. Java并发指南13:Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

    Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析 转自https://www.javadoop.com/post/hashmap#toc7 部分内容转自 http: ...

  6. RGB-D(深度图像) & 图像深度

    RGB-D(深度图像)   深度图像 = 普通的RGB三通道彩色图像 + Depth Map   在3D计算机图形中,Depth Map(深度图)是包含与视点的场景对象的表面的距离有关的信息的图像或图 ...

  7. 移动端——页面点击( touchend -> click)

    手机端页面好多要注意的,点击事件就是其中一个: 在手机端页面中使用 click,安卓手机能正常实现点击效果,可是苹果手机不能点击:用 touchend 代替 click,苹果手机中能点击,但是可能出现 ...

  8. /proc/sys/net/ipv4/ip_conntrack_max

    Things to know (best practices and “issues”) READ IT !!! — uWSGI 2.0 documentationhttps://uwsgi-docs ...

  9. kotlin嵌套类

    就是类中定义类 package loaderman.demo class Outer { var name: String = "name" inner class inner { ...

  10. Markdown 图片的简单处理

    0. 前言 最近写 md 文章的时候发现,在 markdown 里插入一些很长的图片的时候,会显得很不好看,于是去查了一下如何实现 markdown 里图片的并排显示,参考了各个博客内的内容和 mar ...