iOS App之间跳转
1.先来看看效果,这里做了三个功能
- 从MyApp跳转到YourApp
- 从MyApp跳转到YourApp的指定页面
- 从YourApp使用跳转url的方式跳回MyApp
2.实现app之间的跳转需要注意两方面
- 实现跳转的代码
- 配置url及url白名单
3首先来讲url和白名单的设置
- 创建两个工程分别叫MyApp和YourApp
- 设置MyApp的url,设置的方法有两种,都是等效的,如下图
- 设置YourApp的url
- 设置MyApp的白名单
- 在info.plist中添加LSApplicationQueriesSchemes的数组,其中有含有一个string类型的数据,即为你要跳转的另外一个App的url,我们要从MyApp跳转到YourApp,我们把YourApp的url设置为your,所以这里要写入YourApp的url“your”
- 设置YourApp的白名单,我写的demo中有添加用url跳转回MyApp的功能所以要设置YourApp的白名单,如果没有的话是不用设置的,系统自带的有跳转回初始APP的方法
- 注意不要把白名单的key写错了
4.实现跳转的代码
- MyApp中的代码
- (IBAction)gotoYoueApp:(UIButton *)sender {
// 1.获取application对象
UIApplication *app = [UIApplication sharedApplication]; // 2.创建要打开的应用程序的URL
NSURL *url = [NSURL URLWithString:@"your://aaa"]; // 3.判断是否可以打开另一个应用
if ([app canOpenURL:url]) {
// 能,就打开
[app openURL:url];
}else{
NSLog(@"打开应用失败");
}
}
- YourApp中的代码
- 写在AppDelegate.m中
//如果是通过URL打开的本应用,则下面的方法会被执行
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
//获取window中加载的根视图,也就是那个导航
UINavigationController *navi = (UINavigationController *)self.window.rootViewController;
//为了触发push第二个界面的segue,需要拿到
//左边灰色背景的那个控制器的引用
//而灰色的那个控制器是navi的根视图控制器
//vc代表灰色的那个界面
ViewController *vc = (ViewController *)navi.topViewController; //1.获取请求的URL地址
NSString *urlString = [url absoluteString]; //2.判断地址中包含的信息为bbb则打开第二个页面
if ([urlString hasPrefix:@"your://bbb"])
{
[vc performSegueWithIdentifier:@"pushWhiteSegue" sender:nil];
} return YES;
} //新的用于响应从URL跳转过来的方法
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
//获取window中加载的根视图,也就是那个导航
UINavigationController *navi = (UINavigationController *)self.window.rootViewController;
//为了触发push第二个界面的segue,需要拿到
//左边灰色背景的那个控制器的引用
//而灰色的那个控制器是navi的根视图控制器
//vc代表灰色的那个界面
ViewController *vc = (ViewController *)navi.topViewController; //1.获取请求的URL地址
NSString *urlString = [url absoluteString]; //2.判断地址中包含的信息为bbb则打开第二个页面
if ([urlString hasPrefix:@"your://bbb"])
{
[vc performSegueWithIdentifier:@"pushWhiteSegue" sender:nil];
}
return YES;
}- 想要跳转到MyApp的时候
- (IBAction)goBackMyApp:(id)sender {
UIApplication *app = [UIApplication sharedApplication];
NSURL *url = [NSURL URLWithString:@"my://"];
if ([app canOpenURL:url]) {
[app openURL:url];
}else{
NSLog(@"跳回到myapp失败");
}
}
5.demo:https://github.com/TigerCui/MyAppJumpToYourApp.git
iOS App之间跳转的更多相关文章
- ios两个app之间跳转,传值的实现
两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...
- iOS应用之间跳转
本篇博文将涉及到以下知识点: app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫 ...
- iOS APP之间到跳转,以及热门应用,手机自带到应用跳转
应用之间的跳转 在第一个APP中,做如下操作:1.在info.plist文件中的"信息属性列表"下添加一项:"URL类型"; 2.点开"URL类型&q ...
- iOS App之间常用的五种通信方式及适用场景总结
iOS系统是相对封闭的系统,App各自在各自的沙盒(sandbox)中运行,每个App都只能读取iPhone上iOS系统为该应用程序程序创建的文件夹AppData下的内容,不能随意跨越自己的沙盒去访问 ...
- iOS --- 通过openURL实现APP之间跳转并传递数据
在IOS中,实现一个应用启动另外一个应用,使用UIApplication的openURL:方法就可实现,这里以test跳到test02为例.(需要先创建这两个工程) 注册自定义URL协议(在test中 ...
- ios app下载跳到itunes
<body class="box"> <div class="text"> <a href="https://itune ...
- iOS APP版本更新跳转到App Store下载/更新方法
使用下面的连接即可跳转到App Store itms-apps://itunes.apple.com/cn/app/id*********** 其中********* ...
- iOS App 内部跳转(设置、Wifi、蓝牙...)关键词
1.iOS 10 以前: 蜂窝网络:prefs:root=MOBILE_DATA_SETTINGS_ID Wi-Fi:prefs:root=WIFI 定位服务:prefs:root=LOCATION_ ...
- iOS应用之间的跳转
app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫过于第三方登录,支付宝支付等等 ...
随机推荐
- Enterprise Integration Pattern - 组成简介
近些年来,越来越多的Web应用正在逐渐向大型化的方向发展.它们通常都会包含一系列相互协作的子服务.在开发过程中,如何让这些子服务协同工作常常是软件开发人员所最为头疼的问题,如各个子服务之间的数据表示不 ...
- 跟Unity3D学代码优化
今天我们来聊聊如何跟Unity学代码优化,准确地说,是通过学习Unity的IL2CPP技术的优化策略,应用到我们的日常逻辑开发中. 做过Unity开发的同学想必对IL2CPP都很清楚,简单地说,IL2 ...
- NodeJS的代码调试和性能调优
本文转自我的个人博客. NodeJS 自 2009 年显露人间,到现在已经六个年头了,由于各种原因,中间派生出了个兄弟,叫做 iojs,最近兄弟继续合体,衍生出了 nodejs4.0 版本,这东西算是 ...
- 应用r.js来优化你的前端
r.js是requireJS的优化(Optimizer)工具,可以实现前端文件的压缩与合并,在requireJS异步按需加载的基础上进一步提供前端优化,减小前端文件大小.减少对服务器的文件请求.要使用 ...
- 详解前端模块化工具-webpack
webpack是一个module bundler,抛开博大精深的汉字问题,我们暂且管他叫'模块管理工具'.随着js能做的事情越来越多,浏览器.服务器,js似乎无处不在,这时,使日渐增多的js代码变得合 ...
- 关于python中的flush问题
今天写了一个控制台下的进度条小程序,遇到了关于flush的问题,在这里小小的总结一下. 首先在要flush的字符串必须后边加上'\r'(回车) 将数据送入缓冲区这样在新打印字符的时候就可以将原来的显示 ...
- 【PRINCE2是什么】PRINCE2认证之七大原则(7)
我们先来回顾一下,PRINCE2七大原则分别是持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁 第七个原则:根据项目环境剪裁 PRINCE2的价值在于它是一个通用的项目管理方 ...
- Win10 字体模糊解决(DPI缩放禁用),设置默认输入法英文
电脑坏了 , 换了新电脑, 但是新电脑,死活不能装win7, 装都不能装!!!郁闷了 好多地方字体模糊了,百般设置都不好看, 后来远程桌面到win2008server, 发现,在远程桌面里面居然很清晰 ...
- Android开发之自定义的ListView(UITableViewController)
Android开发中的ListView, 顾名方法思义,就是表视图.表示图在iOS开发中就是TableView.两者虽然名称不一样,但是其使用方法,使用场景以及该控件的功能都极为相似,都是用来展示大量 ...
- 解决手机浏览器上input 输入框导致页面放大的问题(记录)
在微信手机页面开发当中,页面是没有问题的,但是当焦点在input输入框的时候,手机页面会自动放大. 加入以下代码在head 区,可解决此问题 <meta name="viewport& ...