1.先来看看效果,这里做了三个功能

  1. 从MyApp跳转到YourApp
  2. 从MyApp跳转到YourApp的指定页面
  3. 从YourApp使用跳转url的方式跳回MyApp

2.实现app之间的跳转需要注意两方面

  1. 实现跳转的代码
  2. 配置url及url白名单

3首先来讲url和白名单的设置

  1. 创建两个工程分别叫MyApp和YourApp
  2. 设置MyApp的url,设置的方法有两种,都是等效的,如下图
  3. 设置YourApp的url
  4. 设置MyApp的白名单
    1. 在info.plist中添加LSApplicationQueriesSchemes的数组,其中有含有一个string类型的数据,即为你要跳转的另外一个App的url,我们要从MyApp跳转到YourApp,我们把YourApp的url设置为your,所以这里要写入YourApp的url“your”
  5. 设置YourApp的白名单,我写的demo中有添加用url跳转回MyApp的功能所以要设置YourApp的白名单,如果没有的话是不用设置的,系统自带的有跳转回初始APP的方法
  6. 注意不要把白名单的key写错了

4.实现跳转的代码

  1. MyApp中的代码
    1. - (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(@"打开应用失败");
      }
      }
  2. YourApp中的代码
    1. 写在AppDelegate.m中
    2. //如果是通过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;
      }
    3. 想要跳转到MyApp的时候
    4. - (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之间跳转的更多相关文章

  1. ios两个app之间跳转,传值的实现

    两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...

  2. iOS应用之间跳转

    本篇博文将涉及到以下知识点: app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫 ...

  3. iOS APP之间到跳转,以及热门应用,手机自带到应用跳转

    应用之间的跳转 在第一个APP中,做如下操作:1.在info.plist文件中的"信息属性列表"下添加一项:"URL类型"; 2.点开"URL类型&q ...

  4. iOS App之间常用的五种通信方式及适用场景总结

    iOS系统是相对封闭的系统,App各自在各自的沙盒(sandbox)中运行,每个App都只能读取iPhone上iOS系统为该应用程序程序创建的文件夹AppData下的内容,不能随意跨越自己的沙盒去访问 ...

  5. iOS --- 通过openURL实现APP之间跳转并传递数据

    在IOS中,实现一个应用启动另外一个应用,使用UIApplication的openURL:方法就可实现,这里以test跳到test02为例.(需要先创建这两个工程) 注册自定义URL协议(在test中 ...

  6. ios app下载跳到itunes

    <body class="box"> <div class="text"> <a href="https://itune ...

  7. iOS APP版本更新跳转到App Store下载/更新方法

    使用下面的连接即可跳转到App Store itms-apps://itunes.apple.com/cn/app/id***********                  其中********* ...

  8. iOS App 内部跳转(设置、Wifi、蓝牙...)关键词

    1.iOS 10 以前: 蜂窝网络:prefs:root=MOBILE_DATA_SETTINGS_ID Wi-Fi:prefs:root=WIFI 定位服务:prefs:root=LOCATION_ ...

  9. iOS应用之间的跳转

    app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫过于第三方登录,支付宝支付等等 ...

随机推荐

  1. Linux3 在VMware中搭建CentOS6.5虚拟机

    前言:      本文主要是我在大家hadoop集群之前 ,需啊先安装CentOS虚拟机,记录在此,作为参考.如果能帮助到其他人,自然是更好啦. =========================== ...

  2. spring声明式事务管理总结

    事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> <bean id="transactionM ...

  3. Android开发学习之路-EventBus使用

    EventBus是一个通过发布.订阅事件实现组件间消息传递的工具. 它存在的目的,就是为了优化组件之间传递消息的过程.传统组件之间传递消息的方法有使用广播,回调等,而这些方法使用都比较复杂. 工作原理 ...

  4. Linux Hadoop2.7.3 安装(单机模式) 一

    Linux Hadoop2.7.3 安装(单机模式) 一 Linux Hadoop2.7.3 安装(单机模式) 二 java环境安装 http://www.cnblogs.com/zeze/p/590 ...

  5. WCF学习之旅—基于Fault Contract 的异常处理(十八)

       WCF学习之旅—WCF中传统的异常处理(十六) WCF学习之旅—基于ServiceDebug的异常处理(十七) 三.基于Fault Contract 的异常处理 第二个示例是通过定制Servic ...

  6. 解析大型.NET ERP系统 通用附件管理功能

    大型系统具备一个通用的附件管理功能,对于单据中无法清晰表达的字段,用一个附件图片或附件文档表示是最好的方法了.比如物料清单附加一张CAD图纸,销售订单评审功能中附加客户的各种表格,通用附件功能对系统起 ...

  7. mac linux rename命令行批量修改文件名

    我的mac使用命令行批量修改名字时发现居然没有rename的指令: zsh: command not found: rename 所以使用HomeBrew先安装一下: ➜ ~ brew install ...

  8. scrapy cookies:将cookies保存到文件以及从文件加载cookies

    我在使用scrapy模拟登录新浪微博时,想将登录成功后的cookies保存到本地,下次加载它实现直接登录,省去中间一系列的请求和POST等.关于如何从本次请求中获取并在下次请求中附带上cookies的 ...

  9. 设置nginx禁止IP直接访问,只能通过指定的域名访问

    nginx的版本是1.2.1. 设置配置文件disableip.conf: server {     listen 80;     server_name _;     return500; } 这是 ...

  10. CLR via C# 摘要一:托管程序的执行模型

    托管程序的执行模型大致如下: 编译源代码为程序集(dll或exe文件),程序集包括了记录相关信息的元数据和IL代码 执行程序集文件时,启动CLR,JIT负责把IL编译为本地代码并执行 IL是微软推出的 ...