今天来说说一个很实用的技术,因为在实际开发中很多项目都是有多端的,不仅仅是移动端,还会有网页端等等,以及同一个公司有多个APP需要互相引流等等,那么这个时候就会出现H5页面跳转到APP,一个APP跳转到另外一个APP的需求,比如下面的截图就是在微信里面分享的简书链接,然后点击“打开APP”就会跳转到手机里下载的简书APP同样的页面,如下图:
这里就使用到了一个叫URL Schemes的东西,那么下面我们就开始讲一下怎么配置这个URL Schemes。
配置完之后,可以打开Safari进行验证,在地址栏输入上面配置好的URL Schemes,比如:iosbaiduzhidao://
输入完成,点击enter就会有下面的效果:
这个时候点击打开就会打开APP,下面就需要在跳转的目标APP进行相关的操作,会调用AppDelegate里面的:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
return YES;
}
当通过URL Schemes打开APP时,就会调用这个方法,并且将对应的网址URL通过方法对应的参数URL传递给APP。比如:输入了一个网址iosbaiduzhidao://test/product/123,这时候在APP中就能取到product/123,然后知道了需要跳转到Product页面,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;
}
获取到了参数,那么接下来要做的就是跳转到指定的页面了,比如这里就是跳转到商品详情,完整代码如下:
- (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打开指定页面
NSString *goodsID = [self getParamByName:@"goodsId" URLString:url.absoluteString];
if (goodsID.length > 0) {
XMFGoodsDetailViewController *VCtrl = [[XMFGoodsDetailViewController alloc]initWithGoodsID:goodsID];
//具体根据项目使用的导航控制器
//获取导航控制器
XMFBaseUseingTabarController *tabVC = (XMFBaseUseingTabarController *)self.window.rootViewController;
XMFBaseNavigationController *pushClassStance = (XMFBaseNavigationController *)tabVC.viewControllers[tabVC.selectedIndex];
// 跳转到对应的控制器
[pushClassStance pushViewController:VCtrl animated:YES];
}
return YES;
}else{
return YES;
}
}
通过这样子就完整地实现了从H5打开指定APP跳转到APP的指定页面。
下面单独说一下从一个APP跳转到指定APP的注意点,除了上面的全部操作之外,还需要在这个APP里面(不是跳转后的目标APP)的info.plist配置一下白名单,如下图:
同时在跳转前的APP里面使用下面代码实现跳转到指定APP,如下:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"iosbaiduzhidao://test/product/123"]];
这样之后,就完整实现了H5以及一个APP跳转到指定APP的一个操作。
如果以上的方法帮助到你了,欢迎分享,更欢迎简书底部赞赏,也可以直接打开支付宝进行打赏支持作者创作,感谢感谢!
支付宝账号:zouhuaping123@qq.com
欢迎和我交流,QQ和微信:834537795(小蜜蜂)