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之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫过于第三方登录,支付宝支付等等 ...
随机推荐
- mvc4 自定义HtmlHelper
好久没写博客了,最近只看博客不写的习惯很不好啊. 好了,最近的项目中大量的用到了表单,很多表单有特殊的编写,但是在该项目中又有很多重复的地方,这个时候若能封装成htmlhelper将大大降低工作量的. ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- [Java Collection]List分组之简单应用.
前言 今天有一个新需求, 是对一个List进行分组, 于是便百度到一些可用的代码以及我们项目使用的一些tools, 在这里总结下方便以后查阅. 一: 需求 现在我们一个数据库表t_series_val ...
- redis成长之路——(六)
redis配置 为了码农在代码上只关心业务以及代码上的统一性,wenli.drive.redis内部使用配置来完成那些不同的场景,也就是说随便填填配置就能适应不同的场景! 当然配置多了码农也会受不了, ...
- 【WCF】基址与默认终结点
五月份的时候,有位老友给老周提了个建议:希望老周写一写WCF的文章.其实老周以前是写过WCF的文章的,只是不是写在这个博客里,老周并不打算把X年前的博客导进来,要写的话,重新写吧.毕竟,那个时候写的文 ...
- 高性能JavaScript--数据存储(简要学习笔记二)
1.JavaScript中四种基本数据存取位置:字面量,本地变量,数组元素,对象成员. 一般来说:[字面量,局部变量]运行速度>[数组,对象成员] 2.内部属性包含了一个函数被创建的作用域中 ...
- Compile FreeCAD on Windows
Compile FreeCAD on Windows eryar@163.com 1.Introduction FreeCAD是一个参数化的三维造型软件,主要用于任意大小的实际模型的设计.参数化的建模 ...
- MVC5 网站开发之二 创建项目
昨天对项目的思路大致理了一下,今天先把解决方案建立起来.整个解决包含Ninesky.Web.Ninesky.Core,Ninesky.DataLibrary等3个项目.Ninesky.Web是web应 ...
- nginx源码分析之hash的实现
nginx实现了自己的hash数据结构,正如数据结构中讲述的那样,nginx用开放链表法解决冲突,不过不同的是一旦一个hash表被初始化后就不会被修改,即插入和删除,只进行查询操作,所以nginx通过 ...
- 数据库日常维护-CheckList_02有关数据库备份检查
数据库备份是DB日常运维中最基本的也是最重要的工作,很多情况下都是做成作业形式实现自动化周期性的做全备.差异以及日志备份.那么,如果作业出现问题没有完成工作,我们可以设置自动报警如email被动提醒我 ...