首页 > 点击一个按钮,如果装了app则直接跳转到app,如果没有则跳转到下载链接

点击一个按钮,如果装了app则直接跳转到app,如果没有则跳转到下载链接

很多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的弹窗?


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

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

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


每个APP都有一个通信的机制的,其实就是外部访问APP的一个协议,类似于a标签的一个链接,当你调用这个协议,如果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


 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开发给我的

【热门文章】
【热门文章】