美文网首页
点击链接跳转到应用指定页面

点击链接跳转到应用指定页面

作者: shushuzhen | 来源:发表于2018-12-25 15:58 被阅读20次

公司最近做扫码跳转功能,其实有点类似淘宝粘贴链接后的跳转,原理其实是一样的,下面说一下我的处理。

因为iOS的原因,这边从第三方扫码里进入的话统一提示用户使用Safari打开,打开后自动提示是否跳转到“XXX APP”,在下方处理你点击链接后获取的内容。在这里,需要链接里有一个特殊的字符,你能判断这是你自己的链接后做的操作,否则会任意一个链接都会进入此方法。

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{}

这种情况是APP已经开了一个进程在后台,于是要保证APP在任何界面下都能跳转到指定的页面,于是我们要在APPDelegate处理跳转,在这里做跳转主要就是要获取到当前可视的控制器,获取到当前的控制器后用push方法即可。如下代码所示:

获取到当前控制器
-(UIViewController *)currentViewController
{
    
    UIViewController * currVC = nil;
    UIViewController * Rootvc = self.window.rootViewController ;
    do {
        if ([Rootvc isKindOfClass:[UINavigationController class]]) {
            UINavigationController * nav = (UINavigationController *)Rootvc;
            UIViewController * v = [nav.viewControllers lastObject];
            currVC = v;
            Rootvc = v.presentedViewController;
            continue;
        }else if([Rootvc isKindOfClass:[UITabBarController class]]){
            UITabBarController * tabVC = (UITabBarController *)Rootvc;
            currVC = tabVC;
            Rootvc = [tabVC.viewControllers objectAtIndex:tabVC.selectedIndex];
            continue;
        }else if ([Rootvc isKindOfClass:[XXXCustom class]]){
            XXXCustom * tabVC = (XXXCustom *)Rootvc;
            currVC = tabVC;
            Rootvc = tabVC.selectedViewController;
            continue;
        } 
    } while (Rootvc!=nil);
    

    return currVC;
}

用获取到的控制器再到openURL方法里,push控制器即可。

当然,大家在实际开发中的时候,有很多其他的判断条件,要考虑到是否登录,是否有权限等,所以开发结合实际情况在跳转前做自己的相应操作即可。

相关文章

网友评论

      本文标题:点击链接跳转到应用指定页面

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