js 判断移动端是否存在某个app,存在的话就打开,不存在就打开下载页面
现有的技术方案都不能完美实现需求,
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);
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
可以看下https://github.com/pod4g/tool...