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. 最牛的打字效果JS插件 typing.js

    最新在做公司的一个项目,需要实现一个敲打代码的动画效果,粗意味比较简单,果断自己直接开写,写着写着发现是一个坑.需要支持语法高亮,并不能直接简单的用setTimeout来动态附件innerHTML.苦 ...

  2. 感悟 GNU C 以及将 Vim 打造成 C/C++ 的半自动化 IDE

    C 语言在 Linux 系统中的重要性自然是无与伦比.不可替代,所以我写 Linux 江湖系列不可能不提 C 语言.C 语言是我的启蒙语言,感谢 C 语言带领我进入了程序世界.虽然现在不靠它吃饭,但是 ...

  3. Go语言实战

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文通过从无到有创建一个利用Go语言实现的非常简单的HttpServe ...

  4. .NET中使用Redis (二)

    很久以前写了一篇文章 .NET中使用Redis 介绍了如何安装Redis服务端,以及如何在.NET中调用Redis读取数据.本文简单介绍如何设计NoSQL数据库,以及如何使用Redis来存储对象. 和 ...

  5. 使用Nginx+Lua代理Hadoop HA

    一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNo ...

  6. 架构 Roadmap 笔记分享

    虽然我们的架构不是开源的,不过一些笔记可以愿意公开和大家讨论一下,我相信不少人在和我们干着同样的事情,那不如一块儿交流一下,这样我们可以更快. 这里前端,后端都有,前端我们用的是 avalon js, ...

  7. Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结

    Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结 1.1. 软件体系架构是沿着单机到 CS 架构,再到 BS 的三层架构甚至多层架构逐步发展过来的,关于 ...

  8. ★Kali信息收集~3.子域名系列

    ★3.1Netcraft :子域名查询  官网:http://searchdns.netcraft.com/ 输入要查询的域名,即可得知子域名 3.2Fierce :子域名查询 概述: fierce ...

  9. android 视频录制 混淆打包 之native层 异常的解决

    原文地址:http://www.cnblogs.com/linguanh/    (滑至文章末,直接看解决方法) 问题起因: 前5天,因为项目里面有个类似 仿微信 视频录制的功能, 先是上网找了个 开 ...

  10. HTML 基础篇

    本章内容: 简介 HTML定义 标签定义和属性 HTML5基本结构 HTML5字符集 <head>标签 <title> <base/> <link/>( ...