iOS开发过程中,我们经常碰到应用间跳转的情景:

 1、使用第三方用户登录,跳转到需授权的App或跳转到分享app的对应页面

*需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名、密码";

2、应用程序推广,跳转到另一个应用程序(本机已经安装);

3、跳转到iTunes并显示应用程序下载页面(本机没有安装);

4、第三方支付,跳转到第三方支付App,如支付宝支付,微信支付;

5、使用系统内置程序,如跳转到打电话、发短信、发邮件、Safari等

应用间跳转原理:若应用A跳转到应用B,则给A、B自身自定义URL Schemes(自定义的协议头)后,通过在A中处理B的URL Schemes,就可以在A中启动B了。

注:iOS9之后,应用间跳转需要在Info.plsit中设置白名单。以 ‘LSApplicationQueriesSchemes’为Key值,对应数组value中添加白名单应用的URL Schemes即可。若未设置白名单,会报错,值得我们注意:

-canOpenURL: failed for URL: "应用B的URL Schemes://" - error: "This app is not allowed to query for scheme 应用B"

以下例子均以系统高于iOS9为例。

例一:应用A跳转到应用B

AppA自定义URL Schemes,且在应用A的Info.plist中设置白名单,添加应用B的URL Schemes

跳转代码:

例二:应用A跳转到应用B指定界面

A中跳转响应事件:

应用B捕捉到被其他应用打开:

系统版本小于iOS9

系统版本大于iOS9

例三:应用B反跳转回应用A

1、 步骤分析:从B再跳转回A,那么在A跳转到B的时候,还应将应用A的URL Schemes传递过来。这样我们才能指定返回哪个应用程序(iOS9之后,该应用一定要添加到白名单内)

指定一个传递URL的规则:协议头://应用B的URL Schemes?应用A的URL Schemes。即:AppB://One?AppA。

说明:

AppB是跳转过来的应用App-B的URL Schemes;

One是用来区别跳转页面的标识;

? 是分割符;

AppA是跳转回的应用App-A的URL Schemes

2、我们根据传递来的数据,进行反跳回去。跳转页面设置一个属性保存传递的字符串

@property (nonatomic, copy) NSString *urlString;

AppA中的修改:

AppB中的修改:

1.修改AppDelegate代理方法:

2.分别修改OneVc和TwoVc控制器

参考:iOS应用间跳转

iOS开发——应用间跳转的更多相关文章

  1. IOS 在控制器间跳转实现过渡动画

    已经掌握了CALayer下的CATransition动画在同一个控制器下实现,但是在不同控制器间跳转又该如何实现呢? MyViewController *myVC = [[MyViewControll ...

  2. iOS开发,应用间的跳转

    预习:URL由两部分组成-- 1.scheme:协议头(http://  ftp:// 等等) 2.path:路径(URL中path可以没有) 一.简单实现跳转到指定APP(也就是说跳转到的APP必须 ...

  3. iOS 总结APP间跳转的常用以及非常用需求 APP跳转Safari APP跳转APP

    需求驱动技术,有了新的需求,旧技术无法实现时,就会有新的技术出现. 一般的APP跳转需求有以下几种: 1.  从自己的APP跳转到别人的APP. 2. 从自己的APP跳转系统APP. 3. 让别人的A ...

  4. iOS开发之如何跳到系统设置里的各种设置界面

    跳到更多设置界面 除了跳到WiFi设置界面,能不能跳到其他的设置界面呢?比如:定位服务.FaceTime.音乐等等.都是可以的,一起来看看如何实现的! 定位服务 定位服务有很多APP都有,如果用户关闭 ...

  5. iOS开发 点击跳转到App Store 或者 点击按钮去评价

    //跳转到应用页面 NSString *str = [NSString stringWithFormat:@"http://itunes.apple.com/us/app/id%d" ...

  6. 从小白开始学习iOS开发

    从事iOS开发不经意间,已经两年过去了,记得当初看到OC是,我根本就不知道那些个东西是什么?从开始学习开机,到一个个英文开始,为了能找到工作,愣是耐下心去坚持看下去. 现在回想起来,很是庆幸我没有放弃 ...

  7. 【转】iOS开发--一步步教你彻底学会『iOS应用间相互跳转』

    1. 应用间相互跳转简介 在iOS开发的过程中,我们经常会遇到需要从一个应用程序A跳转到另一个应用程序B的场景.这就需要我们掌握iOS应用程序之间的相互跳转知识. 下面来看看我们在开发过程中遇到的应用 ...

  8. iOS开发-二维码扫描和应用跳转

    iOS开发-二维码扫描和应用跳转   序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如Z ...

  9. iOS开发拓展篇—应用之间的跳转和数据传递

    iOS开发拓展篇—应用之间的跳转和数据传 说明:本文介绍app如何打开另一个app,并且传递数据. 一.简单说明 新建两个应用,分别为应用A和应用B. 实现要求:在appA的页面中点击对应的按钮,能够 ...

随机推荐

  1. thinkphp5使用QueryList实现采集功能

    QueryList是基于phpQuery的 1.下载`QueryList.php`和`phpQuery.php`这两个文件. 2.在`extend`下新建`QL`目录. 3.将下载好的`QueryLi ...

  2. TFS如何强制撤销别人的机器签出的文件

    原文:http://blog.csdn.net/jxian2009/article/details/50331955 用过TFS的都知道,没有比同事离职了,剩下一堆签出的文件更蛋疼的. 试过各种方法, ...

  3. 机器学习读书会的分享 - Reinforcement Learning: An Introduction 第4-6章

    我在机器学习读书会的分享slides,关于DP.MC.TD方法: https://mp.weixin.qq.com/s/r8wZw4iZwFCz0nnakutY3Q 内容如下:

  4. kettle5.4ODBC和OCI连接配置

    1.kettle 5.4 使用JDBC连接的时候报错(测试不同的数据库,发现只是连接11gRAC 的时候会报JDBC的错误) 具体报错如下 java.sql.SQLException: 建数据库连接出 ...

  5. CentOS Linux解决Device eth0 does not seem to be present【转】

    在VMware里克隆出来的CentOS Linux,ifconfig...没有看到eth0,然后重启网卡又报下面错误. 故障现象: service network restartShutting do ...

  6. JDK动态代理详解-依赖接口

    0. 原理分析 a). 自定义实现InvocationHandler类,实现代理类执行时的invoke方法 b). 使用Proxy.newProxyInstance生成接口的代理类(入参还包括Invo ...

  7. jQuery 方法 属性

    Attribute:$("p").addClass(css中定义的样式类型); 给某个元素添加样式$("img").attr({src:"test.j ...

  8. Swift网络库Alamofire的导入

    一.手动导入 1, 官网下载 Alamofire 2, 解压下载的文件 放入工程的顶层目录下 3, 打开工程 Add Files 4, 选中项目 TARGETS > General > E ...

  9. mysql 批量修改 表字段/表/数据库 字符集和排序规则

    今天接到一个任务是需要把数据库的字符编码全部修改一下,写了以下修正用的SQL,修正顺序是   表字段 > 表 > 数据库. 表字段修复: #改变字段数据 SELECT TABLE_SCHE ...

  10. Linux系统 Centos7/Centos6.8 yum命令在线安装 MySQL5.6

    Linux系统 Centos7 yum命令在线安装 MySQL5.6 标签: centosmysqlyum 2015-11-18 17:21 707人阅读 评论(0) 收藏 举报  分类: Linux ...