从web打开或下载app

window.location.href = "myscheme://myhost:8080/index"; 
window.setTimeout(function(){
    window.location.href = "https://xxxx/apk/app.apk";
},2000);

以上是百度出来的方法,确实可以打开app,但是在显示打开提示后等待几秒定时器,会出现下载提示,不符合需求。所以想求助大神以下问题

求解1:怎么才能在提示打开app时,关闭定时器;当没有安装app时,直接提示下载app,不跑定时器?

求解2:以B站(哔哩哔哩官网)为例。在B站移动版中,手机安装了B站app时,web上的按钮显示‘打开app’;没安装app时,web上的按钮显示‘下载app’,这种效果怎样才能实现?

阅读 837
评论 更新于 2019-02-26
    3 个回答
    wenzi
    • 4.6k

    为此我专门下了一个B站,不过我的手机chrome上并没有变化,还是“下载APP”。

    web端确实无法检测当前设备中是否已安装了。目前通用的方法就是你说的这种,先尝试打开,然后再延迟进行下载。我们使用的也是这种。其他开发者也就是在延迟下载这块做点功夫,因为假如设备真的安装了app,那么在呼起app后,浏览器就会被置于后台,定时器会停止运行或者延迟运行。

    比如有的是利用页面可见性来鉴定,假如浏览器不可见,说明app被呼起了,那么就清除定时器;
    第2种方法:延迟后进行下载操作时,不是直接去下载app,而是先跳转到一个中间页,这个中间页有个按钮,可以点击去下载,就是用户体验会好点;

    评论 赞赏 2019-02-26
      评论 赞赏 2019-02-25
        评论 赞赏 2019-02-26
          撰写回答

          登录后参与交流、获取后续更新提醒