H5按钮唤起APP应用(IOS)或跳转至APPstore

昨天刚到公司收到了内部邮件,让调研是否可以由H5页面直接唤起APP。因为之前搞过这个东西,所以直接回复可以唤起,但是与前端联调时,遇到了种种的坎,所以今天特此记录一下,方便以后使用。
首先H5唤起APP,需要在H5和APP中进行不同的设置。

原理说明

首先需要说明,不管iOS还是Android,浏览器都不可能预知本地是否安装了某个APP的。或者更严谨地说,我们不能通过浏览器来预知本地是否安装。因为就算浏览器可以读取本地应用的安装列表,但是目前也没任何一家浏览器提供查询的API,所以这条路是走不通的。

本质上浏览器是通过URL scheme打开APP,一个APP可以设置一个或多个打开自己的URL scheme。比如,Twitter就注册自己能被「twitter://」打开。

在IOS中需要做的只有俩步:
1.设置 URL scheme 。(其实这个URL scheme是我们打开程序的入口,相当于网址http://后面的域名)。
2.将设置的URL scheme以及APP下载地址发送给前端H5,下面的操作就需要前端去操作啦。

注:因为iOS9以后和之前的iOS系统有区别。

以下是我们的前端代码,我特意来做一下记录。
大概原理是:判断是安卓还是苹果,如果为苹果显示苹果的标签,点击a标签,执行跳转唤起APP(openAPP),加一个定时器,三秒(可根据需求调整)之后,如果没有唤起成功,跳转到App Store下载页面。

  <body>
    <div id="btn">
<!--        <button onclick="submitFn()">打开app</button> -->
        <a href="安卓配置" class="a-btn"  style="display: none">安卓</a>
        <a href="苹果URL scheme://" class="i-btn" style="display: none">苹果</a>
    </div>
  </body>
<script src="http://m-cdn.saclub.com.cn/app/2.4/js/jquery-1.11.3.min.js"></script>
    <script type="text/javascript">
     var ua = navigator.userAgent.toLowerCase();
     var isWeixin = ua.indexOf(‘micromessenger‘) != -1;
     var isAndroid = ua.indexOf(‘android‘) != -1;
     var isIos = (ua.indexOf(‘iphone‘) != -1) || (ua.indexOf(‘ipad‘) != -1);
     var d = new Date();
     var t0 = d.getTime();
    $(function(){
//判断执行安卓按钮还是苹果按钮
         if(isAndroid){
             $(".a-btn").show();
          }else{
              $(".i-btn").show();
          }
    });
    //跳转下载
    $(".a-btn").click(function(){
//安卓
         openApp("安卓下载链接");
    });
    $(".i-btn").click(function(){
//苹果
         openApp("IOS App Store下载链接");
    });
    function openApp(src) {
    // 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为
    // 否则打开a标签的href链接
         var delay = setInterval(function(){
             var d = new Date();
             var t1 = d.getTime();
             if( t1-t0<3000 && t1-t0>2000){
                alert(‘请下载APP‘);
                 window.location.href =src;
             }
             if(t1-t0>=3000){
                  clearInterval(delay);
             }
        },2000);
    }

<a href="苹果URL scheme://" class="i-btn" style="display: none">苹果</a>
注:在IOS中设置URL scheme
前端跳转代码中需要在URL scheme后添加://,否则无法完成跳转。

附:(IOSAPP跳转其它APP)
//其实这个也需要的设置URL scheme ,也是通过这个入口进入。

在APP某个按钮的点击事件中添加以下代码,即可跳转至其它APP。

 //创建一个url,这个url就是APP的url,记得加上://
    NSURL *url = [NSURL URLWithString:@"URL scheme://"];

    //打开url
    [[UIApplication sharedApplication] openURL:url];

只是为了做个记录,方便以后使用,当然如果能给大家带来帮助,也非常荣幸。

作者:锦箫_1
链接:https://www.jianshu.com/p/e3d3939f5189
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

原文地址:https://www.cnblogs.com/qingkun/p/11042921.html

时间: 2024-10-21 19:24:08

H5按钮唤起APP应用(IOS)或跳转至APPstore的相关文章

H5唤起app

H5唤起app 1.判断是否在微信中打开 无论是在哪个平台的客户端Android/IOS,在微信的平台上访问都有一个问题,那就是无法启动客户端,这是微信为了安全性考虑的限制,android这边屏蔽schema协议,除非公司是微信的伙伴加入了白名单才能使用,IOS系统可以去访问app对应appstore的下载页,但是微信经常屏蔽appstore的这个网址,进而访问不到.比较方便的做法就是在微信浏览器中,无论是IOS还是android都去应用宝的下载(IOS 这边最后会到appstore中)页面打开

js在微信、微博、QQ、Safari唤起App的解决方案

背景 最近在做微信.QQ.微博中使用js唤起App,之前也做过类似的功能,不过比较粗糙,考虑的情况不太全,而且那已经是很久之前的事情了,很多技术都已过时,现在有体验更好,功能更加完善的唤起技术,之前的很多的方案,到了现在都已是不太必要了,现在通过这篇文章分享给大家一个全面的.最新的唤起方案,希望对大家有帮忙. 最终实现的效果 用户点击H5页面的打开App或者下载按钮(这个按钮可能在一个下载入口页.各种分享页面的吸顶或吸底的banner),如果用户已经安装了App,则根据业务跳转到相应的Nativ

(转)html5唤起app的方法

这篇文章主要介绍了html5唤起app的方法的相关资料,觉得挺不错的,现在分享给大家,也给大家做个参考.一起来看看吧 感觉不错的话就帮助顶起来吧h5唤起app这种需求是常见的.在移动为王的时代,h5在app导流上发挥着重要的作用.目前我们采用的唤起方式是url scheme(iOS,Android平台都支持),只需原生APP开发时注册scheme, 那么用户点击到此类链接时,会自动跳到APP.三种唤起方案iframevar last = Date.now(),     doc = window.

html5唤起app的方法

这篇文章主要介绍了html5唤起app的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 h5唤起app这种需求是常见的.在移动为王的时代,h5在app导流上发挥着重要的作用. 目前我们采用的唤起方式是url scheme(iOS,Android平台都支持),只需原生APP开发时注册scheme, 那么用户点击到此类链接时,会自动跳到APP. 三种唤起方案 iframe ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1

H5页面测试app测试

H5页面介绍 1. H5页面H5即 HTML5,是最新的 Web 端开发语言版本,大多数手机 APP 页面会用 H5 实现,包括 PC Web 站点也会用它开发实现.所以 Web 的通用测试点和方法基本都可以适用于它.H5其实就是:移动端Web页面.H5应用在很多地方,如APP的活动专题页面.新闻页面.微信公众号文章页面等都属于H5页面,在PC或者手机浏览器都可以直接访问H5页面.H5作为移动端的web页面,有它自身的优势,如它可以跨平台使用,开发成本相对较低:可随时上线就更新版本,适合快速迭代

打造安全的App!iOS安全系列之 HTTPS 进阶

原文地址 上一篇<iOS安全系列之一:HTTPS>被CocoaChina转载,还顺便上了下头条: 打造安全的App!iOS安全系列之 HTTPS,高兴之余也有些诚惶诚恐,毕竟那篇文章只是介绍了比较偏应用的初级知识,对于想要深入了解HTTPS的同学来说是远远不够的,刚好本人最近工作上也遇到并解决了一些HTTPS相关的问题,以此为契机,决定写这篇更深入介绍HTTPS的文章. 本文分为以下四节: 中间人攻击:介绍中间人攻击常见方法,并模拟了一个简单的中间人攻击: 校验证书的正确姿势:介绍校验证书的一

iOS 10 跳转系统设置

苦心人天不负, 为了项目终于把 iOS 10 跳转系统设置的方法给搞定了, 很欣慰. http://www.cnblogs.com/lurenq/p/6189580.html iOS 10 跳转系统设置的字段 电池电量 Prefs:root=BATTERY_USAGE 通用设置 Prefs:root=General 存储空间 Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE 蜂窝数据 Prefs:root=MOBILE_DAT

ios应用内跳转到appstore里评分

在ios6.0前跳转到appstore评分一般是直接跳转到appstore评分NSString *evaluateString = [NSString stringWithFormat:@"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=587767923"];    [[UIApplication sharedAp

iOS开发 跳转场景的三种方式

假设A跳转到B,三种方法: 1.按住ctrl键,拖动A上的控件(比如说UIButton)到B上,弹出菜单,选择Modal.不需要写任何代码,在A上点击Button就会跳转到B 2. 按住ctrl键,拖动A上的View Controller到B上,弹出菜单,选择Modal,两个场景间自动添加连接线和图标,选中该图标,打开Storyboard Segue,identifier输入一个标识符,这里以”aaaa”为例.A里需要跳转时,执行下面的代码: 1 [self performSegueWithId