ios 一个app启动另一个app
来源:互联网 发布:大数据脱敏技术 编辑:程序博客网 时间:2024/05/29 07:38
问题描述:需要从一个ios应用程序中,能启动另一个ios应用程序。
开发环境:xcode7.3.1
关键词:白名单(LSApplicationQueriesSchemes)、注册自己的URL
Demo源代码链接:http://pan.baidu.com/s/1bo327sb
如何从一个app中,启动另一个app???本人ios菜鸟(工作需要,刚开始自学ios,现学现卖,哈哈)参考网上若干文章,实现了这个功能。目前,将demo分享出来。
1.注册自己的URL
新建一个工程MyAppOne,在info.plist 文件中添加字段,注册 MyAppOne的URL.
1.1在 Information Property List中,点击“+” 添加 URL types,添加一个Item,再在Item中,添加“URL Schemes”,再在URL Schemes的Item中,添加一个字符串“AppDemo1”(参考下图),该字符串 即为 当前 工程 MyAppOne 自己 为自己注册的 URL。注册自己的URL完成。
1.2我们刚才注册的自己的URL,就相当于我们当前的工程MyAppOne的一个身份标识。其他app通过ios提供的接口(后面会介绍是ios 的哪个函数),调用这个URL就能启动我们这个MyAppOne应用程序了。
2. 白名单 LSApplicationQueriesSchemes
在ios9以后,需要在info.plist文件中添加 LSApplicationQueriesSchemes(白名单),才能合法启动你想要启动的那个app。白名单中添加的,是你想要启动的app的 URL(这个URL就是上面讲解的“注册自己的URL”)。
2.1 添加 LSApplicationQueriesSchemes。(当前的工程是xcode7.3.1,xcode没有自动匹配 LSApplicationQueriesSchemes,因此,需要你手动输入这个字段,并将它的属性改为【Array】),在 LSApplicationQueriesSchemes 中添加“AppDemo2”。
我们假设已经有一个MyAppTwo,它注册的URL是 AppDemo2。我们想在MyAppOne工程去启动的MyAppTwo这个app,就需要在白名单中添加MyAppTwo的URL。
3.MyAppOne 启动 另一个App的关键代码
3.1 字符串AppDemo2后面的 "://"是必须添加的,否则会 无法打开你指定的app的URL的。
3.2 代码介绍了 无参URL和有参URL。如果想传递参数,在“://”后面附加这些参数即可。
1 //// 用户 按下 按钮********* 请参考 ViewController.m 文件中的代码 2 - (IBAction)Btn1Click:(id)sender { 3 NSLog(@"MyAppOne: You click the button1111."); 4 char szbuff[50] = {0}; 5 sprintf(szbuff, "%s", "AppDemo2://userName=heliang&pwd=20160812"); 6 /// 1.不带参数的传递方式 7 // NSURL* urlLocal = [NSURL URLWithString:@"AppDemo2://"]; 8 /// 2.带参数的传递方式 9 NSURL* urlLocal = [NSURL URLWithString:[NSString stringWithUTF8String:szbuff]];10 11 // 判断是否可以启动该 url12 if([[UIApplication sharedApplication] canOpenURL:urlLocal])13 {14 [[UIApplication sharedApplication] openURL:urlLocal];15 NSLog(@"launch AppDemo2 success!");16 }17 else18 {19 NSLog(@"No such url.");20 /// 跳到 appStore 某个 app21 NSURL* urlAppStore = [NSURL URLWithString:@"https://itunes.apple.com/cn/app/tie-lu12306/id564818797?mt=8"];22 [[UIApplication sharedApplication] openURL: urlAppStore];23 }24 }
3.3至此,已经介绍完如何从一个app1启动另一个app2了。
步骤如下:
①app2在info.plist的URL Schemes中 注册自己的URL
②app1在info.plist的【白名单】中添加 app2注册的 URL
③app1中调用 [UIApplication sharedApplication] openURL:urlLocal]; 方法,启动 app2。(可以参考链接中的demo,进行进一步的理解。)
如何获取传递这种启动方式,传递过来的参数呢?
4.获取传递过来的参数
4.1在AppDelegate.m 中重写 下面的这个application方法(如果文件中没有这个函数,就手动添加下面的函数,这就是重写)。传递过来的参数,就在 url中。(可以参考链接中的demo,进行进一步的理解。)
4.2尽信书不如无书,本文也不是权威的讲解。本文例子,仅供大家入门学习ios的这个知识点。更深层次的原理和应用,还需要大家慢慢琢磨了。当前,能在自己的工程中,实现这个功能,你就成功了。提前祝贺你成功!
1 ///////// 重写的 application 方法******** 请参考 AppDelegate.m 文件中的代码 2 -(bool)application:(UIApplication*)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options 3 { 4 //// 打印 我们收到的参数、以及应用程序的 applicationkey 5 NSLog(@"AppDemo1被启动,下面是 AppDemo2传递过来的 启动参数:"); 6 NSString* strUrl = [[NSString alloc] init]; 7 strUrl = url.absoluteString; 8 NSLog(@"strURL:%@", strUrl); 9 10 NSString* sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];11 NSLog(@"sourceApplication:%@", sourceApplication);12 return YES;13 }
参考链接:
http://www.jianshu.com/p/e14df92cb207
http://lysongzi.com/2016/03/13/iOS-%E4%BD%BF%E7%94%A8URL-Scheme%E5%AE%9E%E7%8E%B0app%E4%B9%8B%E9%97%B4%E7%9A%84%E9%80%9A%E4%BF%A1/
- ios 一个app启动另一个app
- 一个app启动另一个app
- 一个app中启动另一个app
- Android 一个app启动另一个app
- Android 一个app启动另一个app
- Android 一个app启动另一个app
- 如何让一个APP启动另一个APP
- Android 一个app启动另一个app
- 通过一个app启动另一个app应用程序
- Android 一个app启动另一个app
- Android 一个app启动另一个app
- android 一个app 启动另一个app
- Android 一个app启动另一个app
- Android 通过一个app 启动另一个app
- iOS 从一个app打开另一个app
- iOS 一个APP打开另一个APP
- 跨应用启动(在一个APP里启动另一个APP)
- 通过APP启动另一个App
- HITS算法的测试
- Hadoop辅助排序一例小结
- Domino Java代理中第三方jar包需要调用dll文件
- 小码哥-玩转【斗鱼直播APP】系列之首页导航栏设置
- jquery.validate.js使用之自定义表单验证规则
- ios 一个app启动另一个app
- 可以为 null 的类型(C# 编程指南)
- Oracle高级查询之OVER (PARTITION BY ..)
- 傅里叶分析
- 权重问题深入
- 拼音对应汉字
- Set,List,Map,Vector,ArrayList的区别
- angular 各scope 通信
- 巧妙使用数组,内部匿名类改变外部类final对象值