美文网首页iOS开发点滴
最详细介绍从H5或者其他APP跳转到指定APP的指定页面

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

作者: 小蜜蜂Bee | 来源:发表于2021-04-23 17:36 被阅读0次

    今天来说说一个很实用的技术,因为在实际开发中很多项目都是有多端的,不仅仅是移动端,还会有网页端等等,以及同一个公司有多个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(小蜜蜂)

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/pwvcrltx.html