纠结了两天(浏览器唤起本地APP),一直没找到解决办法。今天基本完成了。ps:吐槽一下魔窗文章,为什么不直接开源js代码,乱七八糟的代码让我很恼火。varNavigator=navigator.userAgent;varifChrome=Navigator.match(/Chrome/i)!=null&&Navigator.match(/Version\/\d+\.\d+(\.\d+)?\sChrome\//i)==null?true:false;varifAndroid=(Navigator.match(/(Android);?[\s\/]+([\d.]+)?/))?true:false;variiPad=(Navigator.match(/(iPad).*OS\s([\d_]+)/))?true:false;variiPhone=(!ifiPad&&Navigator.match(/(iPhone\sOS)\s([\d_]+)/))?true:false;varifIos=Navigator.match(/iPhone|iPad|iPd/i)?true:false;varifSafari=ifIos&&Navigator.match(/Safari/);//ios设备的版本号variosVersion=Navigator.match(/OS\s*(\d+)/)iosVersion=iosVersion?(iosVersion[1]||0):0;//Android版本号varandroidVersion=Navigator.match(/Android\s*(\d+)/)androidVersion=androidVersion?(androidVersion[1]||0):0;android5及以上版本//延迟50毫秒setTimeout(function(){location.href='CustomURL'},50)ios9及以上版本setTimeout(function(){//必须使用settimeoutvara=document.createElement("a");//创建一个元素a.setAttribute("href",'customURL'),a.style.display="none",document.body.appendChild(a);vart=document.createEvent("HTMLEvents");//返回一个新创建的具有指定类型的Event对象t.initEvent("click",!1,!1)//初始化新事件对象的属性a.dispatchEvent(t)//绑定事件},0)useiframedocument.querySelector("#"+iframeinallcases).src='CustomURL'//添加iframe到src计算时差并打开APPvarcheckOpen=function(cb){var_clickTime=+(newDate());functioncheck(elsTime){if(elsTime>3000var_count=0,intHandle;intHandle=setInterval(function(){_count++;varelsTime=+(newDate())-_clickTime;if(_count>=100||elsTime>3000){clearInterval(intHandle);check(elsTime);}},20);}checkOpen(function(opened){//APP未打开成功,自动跳转到下载页面if(opened===0&&option.autoRedirectToDownloadUrl){location.href=downloadUrl;}});注意ios9上面的UniversalLink设置可以百度下载(这个需要问ios开发者)还有一个bug是我自己找的在安卓中用qq打开。如果打开APP后立即返回QQ,应用宝的下载页面会立即重新打开APP。ios也有这种情况。打开APP时,立即使用左上角的返回按钮再次点击打开APP按钮,然后UniversalLink失败,跳转到配置的UniversalLink链接,答案大家都知道,一起成长,如果没有安装app在ios9中,会直接选择UniversalLink链接,这个应该是bug,我想,如果没有安装APP后,会跳转到应用宝。不知道怎么实现测试的配置。我不知道如何配置所有使用的APP链接。为了方便GitHub,有一个例子:https://github.com/lmxdawn/te...
