码迷,mamicode.com
首页 > 其他好文 > 详细

应用间的跳转

时间:2015-07-28 23:07:49      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:应用间跳转   跳转   分享朋友圈   第三方登陆   ios   

应用间的跳转

标签(空格分隔): ios进阶


在手机app中经常需要在应用间跳转,比如微信分享,支付宝付款,第三方登陆等。

技术分享

技术分享

简单的例子

这些都是很常见的应用,要实现这样的功能需要在应用程序中设置 URL Schemes(目标应用程序)

技术分享

然后在程序中写如下代码就可以跳转了

- (IBAction)weixing {
     NSURL *url = [NSURL URLWithString:@"weixin://"];
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
}

跳转到目标应用程序的具体页面

  • 上面的例子是最简单的跳转,在实际应用中我们往往需要跳转到具体的页面,比如微信的好友页面,和微信的朋友圈页面
    这里我们自己建立了两个最简单的程序来说明这已跳转和返回的过程
    这里也把源应用程序的URL Schemes设置为”news”,把这个标志随跳转一起传到跳转的程序,好让跳转后通过这个标志能返回原程序,
//点击按钮跳到好友页面
- (IBAction)weixinghaoyou {
    [self openURLString:@"weixin://haoyou?news"];//把"news"传出去
}
//点击按钮跳到朋友圈页面
- (IBAction)weixingpenyouquan {
    [self openURLString:@"weixin://pengyou?news"];
}
- (void)openURLString:(NSString *)urlString
{
    NSURL *url = [NSURL URLWithString:urlString];
    NSLog(@"%@",url);
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
}
  • 在目标应用程序的AppDelegate方法中
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    // 1.拿到主页控制器
    UINavigationController *rootNav = (UINavigationController *)self.window.rootViewController;
    [rootNav popToRootViewControllerAnimated:NO];
    ViewController *mainVc = [rootNav.childViewControllers firstObject];

    // 1.1.给根控制器的urlString属性赋值
    mainVc.urlString = url.absoluteString;

    // 2.根据URL跳转到固定的界面
    if ([url.absoluteString containsString:@"session"]) {
        // 跳转到朋友圈()
        [mainVc performSegueWithIdentifier:@"mainToSession" sender:nil];
    } else if ([url.absoluteString containsString:@"timeline"]){
        // 跳转到微信好友界面
        [mainVc performSegueWithIdentifier:@"mainToTimeline" sender:nil];
    }
    return YES;
}
  • 在跳转后返回原来的应用程序(控制器都有个成员属性url,能保存传过来的URL)
//将url传出去
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"mainToSession"]) {
        SessionViewController *sessionVc = segue.destinationViewController;
        sessionVc.urlString = self.urlString;
    }
}
  • SessionViewController里面实现的点击返回原程序的按钮的方法:
- (IBAction)backToApp {
    // 1.拿到对应应用程序的URL
    NSString *urlString = [[self.urlString componentsSeparatedByString:@"?"] lastObject];
    NSString *appURLString = [NSString stringWithFormat:@"%@://", urlString];
    NSURL *url = [NSURL URLWithString:appURLString];

    // 2.判断一下应用程序是否可以打开,如果可以打开,则打开对应的应用程序
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

应用间的跳转

标签:应用间跳转   跳转   分享朋友圈   第三方登陆   ios   

原文地址:http://blog.csdn.net/maomaopanjiu/article/details/47113523

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!