最詳細(xì)介紹從H5或者其他APP跳轉(zhuǎn)到指定APP的指定頁(yè)面

今天來(lái)說(shuō)說(shuō)一個(gè)很實(shí)用的技術(shù),因?yàn)樵趯?shí)際開發(fā)中很多項(xiàng)目都是有多端的,不僅僅是移動(dòng)端,還會(huì)有網(wǎng)頁(yè)端等等,以及同一個(gè)公司有多個(gè)APP需要互相引流等等,那么這個(gè)時(shí)候就會(huì)出現(xiàn)H5頁(yè)面跳轉(zhuǎn)到APP,一個(gè)APP跳轉(zhuǎn)到另外一個(gè)APP的需求,比如下面的截圖就是在微信里面分享的簡(jiǎn)書鏈接,然后點(diǎn)擊“打開APP”就會(huì)跳轉(zhuǎn)到手機(jī)里下載的簡(jiǎn)書APP同樣的頁(yè)面,如下圖:

微信里打開簡(jiǎn)書文章鏈接
Safari打開H5網(wǎng)頁(yè)

這里就使用到了一個(gè)叫URL Schemes的東西,那么下面我們就開始講一下怎么配置這個(gè)URL Schemes。

Xcode配置URL Schemes

配置完之后,可以打開Safari進(jìn)行驗(yàn)證,在地址欄輸入上面配置好的URL Schemes,比如:iosbaiduzhidao://

Safari驗(yàn)證URL Schemes

輸入完成,點(diǎn)擊enter就會(huì)有下面的效果:


配置成功提示

這個(gè)時(shí)候點(diǎn)擊打開就會(huì)打開APP,下面就需要在跳轉(zhuǎn)的目標(biāo)APP進(jìn)行相關(guān)的操作,會(huì)調(diào)用AppDelegate里面的:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
   return YES;
}

當(dāng)通過(guò)URL Schemes打開APP時(shí),就會(huì)調(diào)用這個(gè)方法,并且將對(duì)應(yīng)的網(wǎng)址URL通過(guò)方法對(duì)應(yīng)的參數(shù)URL傳遞給APP。比如:輸入了一個(gè)網(wǎng)址iosbaiduzhidao://test/product/123,這時(shí)候在APP中就能取到product/123,然后知道了需要跳轉(zhuǎn)到Product頁(yè)面,id是123,效果如下:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
  
  if ([url.scheme isEqualToString:@"iosbaiduzhidao"]){
 DLog(@"scheme:%@\nhost:%@\nquery:%@",url.scheme,url.host,url.query);
        
        }

        return YES;

    }

   return YES;
}

獲取到了參數(shù),那么接下來(lái)要做的就是跳轉(zhuǎn)到指定的頁(yè)面了,比如這里就是跳轉(zhuǎn)到商品詳情,完整代碼如下:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
   
    if ([url.scheme isEqualToString:@"iosbaiduzhidao"]){
        
        DLog(@"scheme:%@\nhost:%@\nquery:%@",url.scheme,url.host,url.query);
        
        //從H5打開指定頁(yè)面
        
        NSString *goodsID = [self getParamByName:@"goodsId" URLString:url.absoluteString];
        
        if (goodsID.length > 0) {
            
            XMFGoodsDetailViewController  *VCtrl = [[XMFGoodsDetailViewController alloc]initWithGoodsID:goodsID];
            
            //具體根據(jù)項(xiàng)目使用的導(dǎo)航控制器
            
            //獲取導(dǎo)航控制器
            XMFBaseUseingTabarController *tabVC = (XMFBaseUseingTabarController *)self.window.rootViewController;
            XMFBaseNavigationController *pushClassStance = (XMFBaseNavigationController *)tabVC.viewControllers[tabVC.selectedIndex];
            // 跳轉(zhuǎn)到對(duì)應(yīng)的控制器
            [pushClassStance pushViewController:VCtrl animated:YES];
    
        }
        
        return YES;
       
    }else{
        
        return YES;
    }
    
    
}

通過(guò)這樣子就完整地實(shí)現(xiàn)了從H5打開指定APP跳轉(zhuǎn)到APP的指定頁(yè)面。

下面單獨(dú)說(shuō)一下從一個(gè)APP跳轉(zhuǎn)到指定APP的注意點(diǎn),除了上面的全部操作之外,還需要在這個(gè)APP里面(不是跳轉(zhuǎn)后的目標(biāo)APP)的info.plist配置一下白名單,如下圖:


配置白名單

同時(shí)在跳轉(zhuǎn)前的APP里面使用下面代碼實(shí)現(xiàn)跳轉(zhuǎn)到指定APP,如下:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"iosbaiduzhidao://test/product/123"]];

這樣之后,就完整實(shí)現(xiàn)了H5以及一個(gè)APP跳轉(zhuǎn)到指定APP的一個(gè)操作。

如果以上的方法幫助到你了,歡迎分享,更歡迎簡(jiǎn)書底部贊賞,也可以直接打開支付寶進(jìn)行打賞支持作者創(chuàng)作,感謝感謝!

支付寶賬號(hào):zouhuaping123@qq.com

歡迎和我交流,QQ和微信:834537795(小蜜蜂)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容