√∆«Wh«˚ - iOS - > ¬ 实用技术 ¬iOSiOS

iOS应用程序间的跳转

2015-08-13  本文已影响7633人  YotrolZ

一.从应用A直接跳转到应用B

1.设置应用B的URL Types中的URL Schemes
设置URL Schemes
2.在应用A中添加一个跳转的按钮,并监听点击
- (IBAction)skipToWechat:(id)sender { 

    NSURL *url = [NSURL URLWithString:@"wechat://"];
    // 如果已经安装了这个应用,就跳转
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
}

二.从 应用A 跳转到 应用B 的制定的页面

1.设置应用B的URL Types中的URL Schemes,(这里不再赘述)
2.在应用A中添加一个跳转的按钮,并监听点击
// 跳转到微信的朋友圈页面
- (IBAction)skipToSession:(id)sender {

    NSURL *url = [NSURL URLWithString:@"wechat://session"];
    // 如果已经安装了这个应用,就跳转
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }   
}

// 跳转到微信的好友列表页面
- (IBAction)skipToSession:(id)sender {

    NSURL *url = [NSURL URLWithString:@"wechat://timeLine"];
    // 如果已经安装了这个应用,就跳转
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
}
3.在应用B中监听跳转,进行判断,执行不同的跳转
// 这个方法快失效了
//- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
//
//    return YES;
//}

// 如果通过URL打开的这个应用就会调用这个方法,我们在这个方法里面进行判断并跳转到不同的页面
// url就是执行跳转时的url
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    // 将URL转成字符串
    NSString *urlString = url.absoluteString;
    
    // 获取跟控制器
    UINavigationController *nav = (UINavigationController *)application.keyWindow.rootViewController;
    ViewController *vc = [nav.childViewControllers firstObject];
    
    // 每次跳转前必须是在跟控制器(细节)
    [nav popToRootViewControllerAnimated:NO];
    
    if ([urlString containsString:@"timeLine"]) { // 跳转到朋友圈
        // 根据segue标示进行跳转
        [vc performSegueWithIdentifier:@"jump2tiemLine" sender:nil];
    } else if ([urlString containsString:@"session"]) { // 跳转到好友列表
        // 根据segue标示进行跳转
        [vc performSegueWithIdentifier:@"jump2session" sender:nil];
    }
    
    return YES;
}

三.从 应用B 反跳转到 应用A

@"wechat://timeLine?news"
 - 说明:
      `wechat://`:将要跳转到的应用的`URL Schemes`;
      `timeLine`:用于区分跳转到应用的哪个页面;
      `?`:分隔符
      `news`:自身的`URL Schemes`,配置方法与上面的一样
上一篇下一篇

猜你喜欢

热点阅读