为了账号安全,请及时绑定邮箱和手机立即绑定

从web打开或下载app

从web打开或下载app

斯蒂芬大帝 2019-03-11 21:42:03
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’,这种效果怎样才能实现?
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

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

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

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


查看完整回答
反对 回复 2019-03-11
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

传送门: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。


查看完整回答
反对 回复 2019-03-11
  • 2 回答
  • 0 关注
  • 599 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信