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之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫过于第三方登录,支付宝支付等等 ...
随机推荐
- 解决托管在Windows上的Stash的Pull request无法合并的问题
最近尝试合并一个托管在Windows的Stash系统中的pull request时,发现合并按钮被禁用,显示有冲突不能合并,但是在diff页面中没有现实冲突,而且代码实际上并没有任何冲突. 后来在这篇 ...
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群
前言: 由于公司项目需要,最近开始学习一下分布式存储相关知识,确定使用FastDFS这个开源工具.利用周末的时间在虚拟机上搭建了分布式存储系统,在搭建过程中,发现网上的资料说的并不是很全, ...
- web音乐播放器总结
前言 项目暂时告一段落,胸中有股炽热之气望喷涌而出!忍不住吐槽,为什么程序员要加班啊,为什么产品下达deadline,就得把这生死剑架在程序员的脖子上.卧槽,听说程序员在国外是叫工程师的.最近看了很多 ...
- C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例
之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...
- ABP源码分析十三:缓存Cache实现
ABP中有两种cache的实现方式:MemroyCache 和 RedisCache. 如下图,两者都继承至ICache接口(准确说是CacheBase抽象类).ABP核心模块封装了MemroyCac ...
- Entity Framework 6 Recipes 2nd Edition(13-10)译 -> 显式创建代理
问题 你有一个POCO实体,原本在执行一个查询时动态创建代理,现在你不想EF延迟创建代理带来的代价. 解决方案 假设你有一个如图Figure13-15的模型 Figure 13-15. A model ...
- Java中六大时间类的使用和区别
关于java中六个时间类的使用和区别 java.util.Date java.sql.Date java.sql.Time java.sql.Timestamp java.text.SimpleD ...
- C# 根据类型名称 生成实体 调用方法
System.Reflection.Assembly ass = System.Reflection.Assembly.Load("项目名称或者DLL"); //System.Th ...
- .NET Core下的日志(3):如何将日志消息输出到控制台上
当我们利用LoggerFactory创建一个Logger对象并利用它来实现日志记录,这个过程会产生一个日志消息,日志消息的流向取决于注册到LoggerFactory之上的LoggerProvider. ...
- Webstorm编译TypeScript
下载webstorm 下载node.js编译器npm Webstorm的安装很简单.但如果没有Java For Mac 环境打开Webstorm时会有提示,点击提示会跳转下载链接,下载安装就好. ...



