【原+转】iOS一个应用打开另一个应用

实现效果:应用app1的一个按钮点击,进入应用app2应用。

主要代码:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"app2://"]];

具体步骤如下:

1.先给app2添加一个URL Schemes:app2.
1.app2添加URL Schemes.png
3.app1代码:找到info.plist,添加LSApplicationQueriesSchemes,添加app2的URL Schemes,这句话很重要!!:
2.给app1的info.plist添加app2的url schemes.png
3.给app1的按钮点击事件写上这句话即可:
- (IBAction)ClickOpenUrlAction:(id)sender {

    //打开app2:
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"app2://"]];
}
4.先运行app2,再运行app1,点击app1的按钮,就可以打开app2的应用了。

【拓展】:

如果想要打开app2的时候给app2传递参数,可以在“// ”后面写上,如: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"app2://id=22&&name=mmmm"]];

这样就实现了第一步打开要调用的应用,app2://就是本地的url,后面的参数则是你要传递的参数,这是为了后面打开应用中指定的页面做准备。
1.app1项目打开app2应用:

//打开app2:
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"app2://id=22&&name=mmm"]];

2.app2项目的appdelete.m文件代码接收参数:

//应用未在后台执行走这里
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    if (launchOptions!=nil){
        [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
        NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
        if(url)
        {
            NSString *urlString=[NSString stringWithFormat:@"%@",url];
         [[NSUserDefaults standardUserDefaults] setObject:urlString forKey:@"url"];
        }
    }
    return YES;
}

//应用后台运行的话会走这里
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    NSLog(@"输出%@",url);
    NSString *urlString=[NSString stringWithFormat:@"%@",url];
    [[NSUserDefaults standardUserDefaults] setObject:urlString forKey:@"url"];

    return YES;
}
//应用后台运行的话会走这里
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
    NSLog(@"ddd输出%@",url);
    NSString *urlString=[NSString stringWithFormat:@"%@",url];
    [[NSUserDefaults standardUserDefaults] setObject:urlString forKey:@"url"];

     return YES;
}

如图:

app2接收参数.png

参考:
1.http://blog.csdn.net/lh_work/article/details/25197781
2.http://www.cnblogs.com/-zhangwy/p/6026040.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 因为项目的需要,我们公司的两个项目要可以相互访问,查找资料,经过自己的总结写下这篇文章,希望可以帮助大家。 1.注...
    UNforgetta_ab44阅读 5,236评论 0 0
  • 目标 平常我们做iOS开发,会经常遇到打开其他的APP的功能。本篇文章讲的就是打开别人的APP的一些知识。我们的目...
    谦言忘语阅读 181,776评论 77 309
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,009评论 19 139
  • 一、应用场景 单点授权登录,第三方分享,第三方登录 二、跳转方法 例如手机有两个应用,app1和app2,app1...
    RogerHXJ阅读 2,286评论 1 1
  • 在阳光明媚的清晨里 你是我心里一个只有背影的天使 曾经的记忆里我们心靠得那么近 可是忽然一句话语握不住空气里冷漠的...
    画心心语阅读 1,264评论 1 8