javascript - 点击一个按钮,如果装了app则直接跳转到app,如果没有则跳转到下载链接
PHP中文网
PHP中文网 2017-04-11 11:19:27
0
4
468

很多h5页面都有立即打开/下载的按钮,比如网易新闻
http://3g.163.com/ntes/special/00340EPA/wapSpecialModule.html?sid=S1465956142051&spst=2&spss=newsapp&spsf=wx&spsw=1

比如今日头条
http://toutiao.com/i6298416478102225409/?tt_from=weixin&utm_campaign=client_share&from=singlemessage&app=news_article&utm_source=weixin&isappinstalled=1&iid=4639652216&utm_medium=toutiao_ios&wxshare_count=2&pbid=19604438942

在移动端打开都有这样一个按钮,点击之后,如果手机里安装了该app,则直接打开,如果没有安装,会跳转去下载。请问这个逻辑是如何实现的,据我所知,js无法判断手机上是否安装了app。

求有经验的大神解惑!


谢谢大家的积极回答,现在遇到的坑是,在iphone的safri中,点击会出现弹窗提示,询问我是否打开app或者告诉我链接无效,因为这个提示的原因导致用setTimeout的逻辑会出现问题,因此不知道各位有没有什么办法能够阻止safri的弹窗?

PHP中文网
PHP中文网

认证0级讲师

全部回复 (4)
迷茫

没有想到这个问题这么多人关注。
昨天有同学还私信问我这个问题搞定没!

不能算是完美搞定吧,但是也有一些调研体会,因此将自己对这个问题的总结写在了下面这篇文章里,有兴趣的同学欢迎去看一下。都是辛苦的劳动成果啊!求点赞!!!

浏览器中唤起native app || 跳转到应用商城下载

    Ty80

    每个APP都有一个通信的机制的,其实就是外部访问APP的一个协议,类似于a标签的一个链接,当你调用这个协议,如果APP没有响应,说明并没有这个APP

      黄舟
      var checkApp = function () { var ua = navigator.userAgent; var isiOS = ua.match(/iPhone|iPod|iPad/i); var isAndroid = ua.match(/Android/i); var isPC = !isiOS && !isAndroid; if (isiOS) { setTimeout(function () { window.location = 'https://www.pgyer.com/sss'; }, 3000); window.location = 'AppTest://www.apptest.com'; } else if (isAndroid) { setTimeout(function () { window.location = 'https://www.pgyer.com/sss'; }, 3000); window.location = 'AppTest://www.apptest.com'; } else { alert('Please open this link via your mobile device instead of computer.'); } }

      其中'AppTest://www.apptest.com'要在你app提前定义好,具体怎么定义我不太清楚了,这是app开发给我的

        左手右手慢动作

        主要是APP 安装的时候注册一个外部协议,然后 a 的 href 里面写 "协议://URL/path/to/file?key=value" 之类的。 如果要判断有没有安装的话则需要HTML5

        参考:
        http://www.cnblogs.com/yejiurui/p/3413796.html
        http://blog.sina.com.cn/s/blog_4e1e357d0101jyed.html

          最新下载
          更多>
          网站特效
          网站源码
          网站素材
          前端模板
          关于我们 免责声明 Sitemap
          PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!