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. Web前端温故知新-CSS基础

    一.CSS定义与编写CSS 1.1 CSS的定义 全名:Cascading Style Sheets -> 层叠样式表 定义:CSS成为层叠样式表,它主要用于设置HTML页面中的文本内容(字体. ...

  2. 锤子OneStep及BigBang使用体验

    令人期待的Smartisan OS v3.1.2终于推送了,第一时间下载了更新.几乎花了半个小时才升级完毕,捧着还热乎的手机,赶忙体验一下传说中的两大杀器:OneStep以及BigBang. 先说On ...

  3. (转)使用 SCons 轻松建造程序

    在软件项目开发过程中,make 工具通常被用来建造程序.make 工具通过一个被称为 Makefile 的配置文件可以自动的检测文件之间的依赖关系,这对于建造复杂的项目非常有帮助,然而,编写 Make ...

  4. 配置hibernate,Struts。文件

    hibernate文件配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernat ...

  5. 引用MVC源码的小问题

    vs2010自己创建的MVC项目,排除掉System.Web.Mvc引用后,引用源码,直接运行会提示引用冲突,这个是因为配置文件的问题,只要把配置文件中assemblies节点下的 <add a ...

  6. TokuDB存储引擎

    TokuDB是Tokutek公司开发的基于ft-index(Fractal Tree Index)键值对的存储引擎. 它使用索引加快查询速度,具有高扩展性,并支持hot scheme modifica ...

  7. IDDD 实现领域驱动设计-上下文映射图及其相关概念

    上一篇:<IDDD 实现领域驱动设计-理解限界上下文> 距离上一篇有几天时间了,<实现领域驱动设计>第三章的内容都是围绕一个词-上下文映射图,我大概断断续续看了几天,总共看了两 ...

  8. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  9. 通过Http接口及SolrNet 两种方法基于Solr5.5.1 实现CURD

    前言 老规矩,任何技术的入门我通常都会总结增删改查,本文我就通过HttpWebRequest和SolrNet的方式实现Solr最基础的增删改查(CURD).对于自己的完整项目,同时不想过于依赖第三方类 ...

  10. docker4dotnet #5 使用VSTS/TFS搭建基于容器的持续交付管道

    在过去的几篇d4d系列中,我给大家介绍了如何使用docker来支持asp.net core的应用开发,打包的场景.Asp.net core的跨平台开发能力为.net开发人员提供了使用容器进行应用开发的 ...