[iOS] APP的跳转

1.APP与APP之间的跳转

原理:通过设置跳转到应用B的URL Schemes(自定义的协议头),应用B将其自身“绑定”到一个自定义URL Schemes上,就可以从应用A中利用应用B的URL Schemes启动应用B了。

比如:应用A跳转到应用B需要在应用B的项目中设置:

a、B -> TARGETS -> Info -> URL Types -> URL Schemes,设置App-B的URL Schemes为AppB

b、A中通过下面代码判断能否打开B,如果手机安装了应用B,则打开。

// 1.获取应用程序App-B的URL Scheme
   NSURL *appBUrl = [NSURL URLWithString:@"AppB://"];

   // 2.判断手机中是否安装了对应程序
   if ([[UIApplication sharedApplication] canOpenURL:appBUrl]) {
   // 3. 打开应用程序App-B
       [[UIApplication sharedApplication] openURL:appBUrl];
   } else {
       NSLog(@"没有安装");
   }
2.浏览器跳转到APP

打开Xcode的APP工程->TARGETS -> Info -> URL Types -> URL Schemes,设置App的URL Schemes为App

在Safari中,输入地址:App:// 就可以打开APP了。


3.通过网页跳转到APP

首先,在APP端定义打开的协议,跟APP之间跳转的设置一下,设置APP的URL Schemes为:APP

在页面中做逻辑判断,如果手机安装了APP则直接打开,否则跳转到APP下载地址去下载。

HTML代码

<div id="btn">
<a onclick="submitFn ><button>打开app</button></a>
</div>
js代码

function submitFn(){
    //判断浏览器
    var u = navigator.userAgent;
    if(/MicroMessenger/gi.test(u) {
       // 引导用户在浏览器中打开
        alert('请在浏览器中打开');
        return;
    }
    var d = new Date();
    var t0 = d.getTime();
    if(u.indexOf('Android') > -1 || u.indexOf('Linux') > -1){
        //Android
        if(openApp('en://startapp')){
         openApp('en://startapp');
        }else{
            //由于打开需要1~2秒,利用这个时间差来处理--打开app后,返回h5页面会出现页面变成app下载页面,影响用户体验
            var delay = setInterval(function(){
                 var d = new Date();
                 var t1 = d.getTime();
                 if( t1-t0<3000 && t1-t0>2000){
                    alert('请下载APP');
                     window.location.href = "app下载地址";
                 }
                 if(t1-t0>=3000){
                      clearInterval(delay);
                 }
            },1000);
        }
    }else if(u.indexOf('iPhone') > -1){
        //IOS
        if(openApp('ios--scheme')){  
            openApp('ios--scheme');
        }else{
            var delay = setInterval(function(){
                var d = new Date();
                var t1 = d.getTime();
                if( t1-t0<3000 && t1-t0>2000){
                    alert('请下载APP');
                    window.location.href = "app下载地址";
                }
                if(t1-t0>=3000){
                    clearInterval(delay);
                }
            },1000);
        }
    }    
}

function openApp(src) {
// 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为
// 否则打开a标签的href链接
     var ifr = document.createElement('iframe');
     ifr.src = src;
     ifr.style.display = 'none';
     document.body.appendChild(ifr);
     window.setTimeout(function(){
          document.body.removeChild(ifr);
     },2000);
}
4.微信跳转到APP

具体实现参考文章:

从微信直接跳转到我们的APP











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值