Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
882 views
in Technique[技术] by (71.8m points)

IOS设备用Safari打开二维码链接,在本机已安装app的情况下依旧跳转到app store

根据公司的需求,扫描一个二维码链接,如果本机装有app的情况下跳转到app,如果没有则跳转到app store下载页面,目前测试是用QQ浏览器可以实现效果,但用safari浏览器依旧跳转到app store,直接上代码.
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name='apple-itunes-app' content='app-id=XXXXXXX'>
  <title>123</title>
  <link rel="stylesheet" href="style/ewm.css">
</head>
<body style="background-color: #7f7f7f;">
<div id="weixin_pageto">
  <div class="txt">
    1、点击右上角<img src="images/_more@3x.png" style="width: 0.7rem;"/>打开菜单<br/>
    2、选择<img src="images/safari@3x.png" style="width: 0.7rem;"/>在浏览器中打开
  </div>
  <img src="images/shape_up@3x.png" alt="" class="uparrow">
  <img src="images/shape1_down@3x.png" alt="" class="downarrow">
</div>
<script src="js/jquery.min.js"></script>
<script src="js/commonUtil.js"></script>
<script type="text/javascript">
  //跳转app地址
  var $ios_app = "CityNRH://?xxxxxx;

  //app下载地址
  var $ios_url = "https://itunes.apple.com/us/app/xxxxxxx/xxxxxxx";

  //创建
  var createIframe = (function () {
    var iframe;
    return function () {
      if (iframe) {
        return iframe;
      } else {
        iframe = document.createElement('iframe');
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
        return iframe;
      }
    }
  })();

   if (/ipad|iphone/i.test(navigator.userAgent)) {
    //创建iframe跳转窗口并有具体链接地址
    var iframe = createIframe();
    //非微信浏览器访问
    if (navigator.userAgent.match(/MicroMessenger/i) != 'MicroMessenger') {
      iframe.src = $ios_app;
      setTimeout(function () {
        //此处如果执行则表示没有app
        window.location = $ios_url;
      }, 2000);
    } else {
      //是微信,则显示相应提示页面
      document.getElementById('weixin_pageto').style.display = "block";
    }
  }
  else {
    window.location = $ios_url;
  }
</script>
</body>
</html>

网上找了很久类似的,貌似12-13年的解决方案是给一个meta标签

    <meta name='apple-itunes-app' content='app-id=XXXXXXX'>

但是测试过后依旧无效,跪求各路大神帮助!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

网上关于使用setTimeout尝试唤起的方案兼容性极差,貌似现在已经完全失效了。扫二维码是打开一个H5页面,在这个页面我们做唤起APP或打开APP Store下载页面。

在iOS 9和安卓6.0以上,已经支持了深度链接,通过深度链接(deep link),我们可以在任何地方,包括微信,QQ,浏览器等唤起我们的APP,再结合应用宝实现跳转到APP Store进行下载。已经有成熟的服务商提供相关的jdk,H5只需要引入js文件并初始化就可以了,当然APP还要集成相关的SDK。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...