h5跳转app指定页面及各种坑的总结

更新时间:2020-11-27 16:46:41点击次数:346次
一、解决方案:URL方案或通用链接
A)URL方案是在app中配置的链接,比如weixin:/,superclass://。
URL方案的格式是[方案]:/[主机]/[路径]?[查询].
b)万能链接是ios9之后的一个功能。它通过传统的HTTP链接启动应用程序。其实是一个以https开头的链接,要满足一些特定的规则才能被认定为万能链接,然后才能直接唤起app。
二、具体实现
有两种情况需要讨论:
1.ios8和android之前:使用scheme  scheme。
原理:无论是ios还是Android,浏览器都无法知道手机上是否安装了某个app,所以方法是先通过URL方案打开app,如果打不开,跳转下载链接。
var  timeout,t=1000,hasApp=true
var  Openscript=setTimeout(function(){
if(!hasApp) {
//跳转到下载链接}
document  . body  . remove  child(IFR);
},2000)
var  t1=date  . now();
var  IFR=document  . CreateElement(' iframe  ');
ifr.setAttribute('src  ',URL);
ifr.setAttribute('style  ',' display  : none  ');
document  . body  . appendchild(IFR);
timeout=setTimeout(function  () {
var  T2=date  . now();
if  (t2 - t1 t  100) {
hasApp=false
{}
},t);
之所以要用iframe打开,而不是直接跳转链接,是因为如果APP没有唤醒,或者APP没有安装,往往会跳转到错误的页面,影响用户体验。但是iframe方法不会引起页面的可见变化(比如页面内容变成新页面),也不会引起浏览器历史的变化。
2.ios9之后:可以使用ios9的方案方案或通用链接方案
(1)先说方案。ios9密封了iframe,所以它使用了直接跳转链接
location.href="vsm setTimeout(函数(){
//跳转到下载链接
},250);
setTimeout(函数(){
location  . reload();
},1000);
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息