今天來(lái)說(shuō)說(shuō)一個(gè)很實(shí)用的技術(shù)鄙信,因?yàn)樵趯?shí)際開(kāi)發(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)書(shū)鏈接,然后點(diǎn)擊“打開(kāi)APP”就會(huì)跳轉(zhuǎn)到手機(jī)里下載的簡(jiǎn)書(shū)APP同樣的頁(yè)面蛉幸,如下圖:
這里就使用到了一個(gè)叫URL Schemes的東西破讨,那么下面我們就開(kāi)始講一下怎么配置這個(gè)URL Schemes。
配置完之后奕纫,可以打開(kāi)Safari進(jìn)行驗(yàn)證提陶,在地址欄輸入上面配置好的URL Schemes,比如:iosbaiduzhidao://
輸入完成匹层,點(diǎn)擊enter就會(huì)有下面的效果:
這個(gè)時(shí)候點(diǎn)擊打開(kāi)就會(huì)打開(kāi)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打開(kāi)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打開(kāi)指定頁(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打開(kāi)指定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)書(shū)底部贊賞累舷,也可以直接打開(kāi)支付寶進(jìn)行打賞支持作者創(chuàng)作浩考,感謝感謝!
支付寶賬號(hào):zouhuaping123@qq.com
歡迎和我交流被盈,QQ和微信:834537795(小蜜蜂)