iOS开发点滴

最详细介绍从H5或者其他APP跳转到指定APP的指定页面

2021-04-23  本文已影响0人  小蜜蜂Bee

今天来说说一个很实用的技术,因为在实际开发中很多项目都是有多端的,不仅仅是移动端,还会有网页端等等,以及同一个公司有多个APP需要互相引流等等,那么这个时候就会出现H5页面跳转到APP,一个APP跳转到另外一个APP的需求,比如下面的截图就是在微信里面分享的简书链接,然后点击“打开APP”就会跳转到手机里下载的简书APP同样的页面,如下图:

微信里打开简书文章链接 Safari打开H5网页

这里就使用到了一个叫URL Schemes的东西,那么下面我们就开始讲一下怎么配置这个URL Schemes。

Xcode配置URL Schemes

配置完之后,可以打开Safari进行验证,在地址栏输入上面配置好的URL Schemes,比如:iosbaiduzhidao://

Safari验证URL Schemes

输入完成,点击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(小蜜蜂)

上一篇下一篇

猜你喜欢

热点阅读