H5W3
当前位置:H5W3 > HTML5 > 正文

【前端】从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’,这种效果怎样才能实现?

回答

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

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

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

看一下这个 https://juejin.im/entry/5a2e3…

传送门:stackoverflow: How to check if an app is installed from a web-page on an iPhone?

除此之外,可以参考「知乎」的做法:不自定义Scheme,而是直接用http(s),然后在App的AndroidManifest.xml中定义Activity拦截URL的规则,浏览器若发现跳转的URL符合上述规则,则会调用App。

本文地址:H5W3 » 【前端】从web打开或下载app

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址