新建DemoA和DemoB两个工程
一、DemoA跳转到DemoB,然后从DemoB返回到DemoA
二、DemoA跳转到DemoB的指定控制器

一、DemoA跳转到DemoB,然后从DemoB返回到DemoA

1、DemoA

1、新建DemoA空工程
2、找到TARGETS,在URL Types中添加URL Schemes为demoA
3、在info.plist文件中添加LSApplicationQueriesSchemes,Type选择Array,添加item0为demoB

2、DemoB

1、新建DemoB空工程
2、找到TARGETS,在URL Types中添加URL Schemes为demoB
3、在info.plist文件中添加LSApplicationQueriesSchemes,Type选择Array,添加item0为demoA

3、DemoA 跳转 DemoB,在DemoA的ViewController中添加下面方法

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {NSURL *url = [NSURL URLWithString:@"demoB://"];if ([[UIApplication sharedApplication] canOpenURL:url]) {[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];} else {NSLog(@"未安装demoB");}
}

4、DemoB 返回 DemoA,在DemoB的ViewController中添加下面方法

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {NSURL *url = [NSURL URLWithString:@"demoA://"];if ([[UIApplication sharedApplication] canOpenURL:url]) {[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];} else {NSLog(@"未安装demoA");}
}

5、这样DemoA和DemoB之间就可以相互跳转

二、DemoA跳转到DemoB的指定控制器

1、使用SceneDelegate,目前仅最低支持iOS13,在SceneDelegate.m中添加以下方法即可,TestViewController为新建的控制器

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {if (@available(iOS 13.0, *)) {UIOpenURLContext *a = URLContexts.allObjects.firstObject;if ([a.URL.absoluteString containsString:@"PageOneViewController"]) {TestViewController *vc = [[TestViewController alloc] init];[self.window.rootViewController presentViewController:vc animated:true completion:nil];}}
}

2、删除SceneDelegate,直接在AppDelegate中实现以下方法即可

删除SceneDelegate:
1、直接删除SceneDelegate.h 和 SceneDelegate.m
2、在AppDelegate.m中删除UISceneSession的两个代理方法
3、在info.plist中删除Application Scene Manifest

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {if ([url.absoluteString containsString:@"TestViewController"]) {TestViewController *vc = [[TestViewController alloc] init];[self.window.rootViewController presentViewController:vc animated:true completion:nil];}return YES;
}

iOS 通过scheme进行应用间跳转相关推荐

  1. iOS开发实用技术之推送-应用间跳转-社交分享

    实用补充 --- 一. 推送通知 1. 什么是推送通知? > 首先明确:**此处的推送通知跟我们的"NSNotification"没有半毛钱关系> 可以理解为: 向用户 ...

  2. ios 调用系统应用的方法 应用间跳转的方法

    声明一个私有方法: #pragma mark - 私有方法 -(void)openUrl:(NSString *)urlStr{//注意url中包含协议名称,iOS根据协议确定调用哪个应用,例如发送邮 ...

  3. iOS iOS9下实现app间的跳转

    自从更新了Xcode7后,苹果公司增加了白名单. 在实现app跳转时,必须把app的唯一标示URL加入到白名单中 - (BOOL)canOpenURL:(NSURL *)url这个方法才会返回yes否 ...

  4. 应用间跳转/友盟统计/支付宝

    应用间跳转/社交分享/第三方登录/应用内统计/支付宝 一.应用间跳转 1.简介 应用间跳转的应用场景 使用第三方登录,需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名" ...

  5. Android两个app间跳转-deepLink的使用

    在开发过程中,经常会遇到两个app之间跳转.或者浏览器链接跳转app的需求,这里简单总结一下. 1.简单的从一个app跳转到另一个app 直接用intent就可以实现. 只要知道目标activity的 ...

  6. JMP跳转指令的指令长度、直接转移与间接转移、段内跳转与段间跳转

    原文链接:https://blog.csdn.net/liuchuo/article/details/51990669 指令长度=操作码的长度+操作数地址的长度 1.段内跳转 JMP指令占1个字节. ...

  7. (8)JMP FAR段间跳转

    一.回顾 在前面的课程中我们学习了MOV和LES等修改段寄存器的指令,当时老师说过,CS寄存器比较特殊,不能用MOV和"LCS"进行修改,原因是CS和EIP共同决定下一条指令的地址 ...

  8. [保护模式]段间跳转和跨段跳转

    文章目录 段间跳转 段寄存器 段间跳转 段间跳转的执行流程 1.段选择子拆分 2.查表得到段描述符 3.权限检查 4.加载段描述符 5.代码执行 总结 跨段跳转 短调用 长调用 跨段不提权 跨段提权 ...

  9. ios开发跳转safari_阻止iOS Web APP中点击链接跳转到Safari 浏览器新标签页

    最近为了更好地接触移动Web 开发狠心购买了一台ipad mini(之前一直都是借同学的,借多了就不好意思了).拿来调试DeveMobile 与EaseMobile 主题 时候发现了不少问题,现在在一 ...

最新文章

  1. 【免费软件测试视频-0013】——Loadrunner9.0 SLA Analysis
  2. 使用Testcontainers和PostgreSQL,MySQL或MariaDB的Spring Boot测试
  3. 程序员面试金典 - 面试题 08.10. 颜色填充(BFS/DFS)
  4. Java多线程学习七:线程池的 4 种拒绝策略和 6 种常见的线程池
  5. 马斯克说,特斯拉卡车有Mad Max狂野模式,危险的变道操作?
  6. [BZOJ] 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场
  7. 快速设置 Docker 的三种网络代理配置
  8. Flash Professional CS6 安装zxp插件
  9. 登录服务器时显示 IE COOKIE阻止,复制Cookie跨域,为什么其他浏览器使用SCRIPT标记发送IE阻止Cookie...
  10. 小德,真的没想到,去年的千年德三子到现如今的现象级
  11. 在排查性能过程中如遇到cpu的wa高时该如何做(一)
  12. sublime text 3143 授权码
  13. ArcGIS API for JavaScript学习笔记(1)API本地部署
  14. 点到平面的基本距离推导公式
  15. IC卡读卡器卡号输出格式
  16. 那年杏花微雨,你说你是DOM
  17. Cisco 7600系列Supervisor Engine 720-3BXL
  18. Java复习第九章 多线程
  19. linux中文麻酱字_在家自制芝麻酱、芝麻香油,味道纯正无添加,原来做法这么简单...
  20. 西门子水处理1200PLC程序+触摸屏程序

热门文章

  1. 不懂高并发,薪资凉半截!
  2. 亲爱的,那些想说却没有说出口的话,我都写在了……月饼上
  3. 周末了放松一下 | 程序员才看得懂的笑话
  4. OpenGL入门(三) 改变绘制的颜色
  5. 2021年8月12日-------Java从基础到项目教程,Java全栈学习路线,帮你省去培训机构的2万块钱。
  6. MacOS和Windows下打开大的TXT文件的软件推荐
  7. 自媒体人必备的8个免费学习网站,每一个都值得收藏
  8. 二十多年的单身生活怎么破?
  9. HDFS Java API 操作
  10. 利用WebUploader实现大文件上传和视频上传