js 判断移动端是否存在某个app

js 判断移动端是否存在某个app,存在的话就打开,不存在就打开下载页面

阅读 6.2k
5 个回答

不可行,就算有,兼容性估计也一塌糊涂,这很明显就是属于app的能力,如果你用混合开发,还差不多

iOS 9.3 之上,关键字: universal links

现有的技术方案都不能完美实现需求,

ios 不知道在什么版本把js线程控制住了,比如在js 弹 alert 的情况下, js线程应该会被阻塞,但 10+ ios下,显然没有被阻塞。

针对题主的问题:
1: js 在webview 内是无法获取是否安装某客户端的信息的,同理在pc上,browser下也不能获取你是否安装了某个客户端(出于隐私安全考虑)。
2: 需求本身的实现方式在ios和android下略有不同,在不同的客户端内的实现也不禁相同。 实现原理大概是,当前location跳转至目标的schema,setTimeout跳转到下载落地页,伪代码:

// universal links: 
var universal_link = 'https://domain.com/universal-support';
// universal_link 可以被ios的通用协议拦截。
// universal_link 此链接执行302至schema,eg: 302 -> myapp://view?id=1024;
var download_link = 'https://domain.com/download';
location.href = universal_link;  
// 如果被ios通用协议拦截,则会直接打开app,否则302跳转协议也会激活app。
// 在app被激活的情况下,js线程正常情况下不执行下面的逻辑,除非用户返回该视图,
// ios 10+ 已经修改了js执行线程,下面的代码始终会执行。
setTimeout(function() {
    location.href = download_link;
}, 200);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题