iOS 通过scheme进行应用间跳转
新建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进行应用间跳转相关推荐
- iOS开发实用技术之推送-应用间跳转-社交分享
实用补充 --- 一. 推送通知 1. 什么是推送通知? > 首先明确:**此处的推送通知跟我们的"NSNotification"没有半毛钱关系> 可以理解为: 向用户 ...
- ios 调用系统应用的方法 应用间跳转的方法
声明一个私有方法: #pragma mark - 私有方法 -(void)openUrl:(NSString *)urlStr{//注意url中包含协议名称,iOS根据协议确定调用哪个应用,例如发送邮 ...
- iOS iOS9下实现app间的跳转
自从更新了Xcode7后,苹果公司增加了白名单. 在实现app跳转时,必须把app的唯一标示URL加入到白名单中 - (BOOL)canOpenURL:(NSURL *)url这个方法才会返回yes否 ...
- 应用间跳转/友盟统计/支付宝
应用间跳转/社交分享/第三方登录/应用内统计/支付宝 一.应用间跳转 1.简介 应用间跳转的应用场景 使用第三方登录,需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名" ...
- Android两个app间跳转-deepLink的使用
在开发过程中,经常会遇到两个app之间跳转.或者浏览器链接跳转app的需求,这里简单总结一下. 1.简单的从一个app跳转到另一个app 直接用intent就可以实现. 只要知道目标activity的 ...
- JMP跳转指令的指令长度、直接转移与间接转移、段内跳转与段间跳转
原文链接:https://blog.csdn.net/liuchuo/article/details/51990669 指令长度=操作码的长度+操作数地址的长度 1.段内跳转 JMP指令占1个字节. ...
- (8)JMP FAR段间跳转
一.回顾 在前面的课程中我们学习了MOV和LES等修改段寄存器的指令,当时老师说过,CS寄存器比较特殊,不能用MOV和"LCS"进行修改,原因是CS和EIP共同决定下一条指令的地址 ...
- [保护模式]段间跳转和跨段跳转
文章目录 段间跳转 段寄存器 段间跳转 段间跳转的执行流程 1.段选择子拆分 2.查表得到段描述符 3.权限检查 4.加载段描述符 5.代码执行 总结 跨段跳转 短调用 长调用 跨段不提权 跨段提权 ...
- ios开发跳转safari_阻止iOS Web APP中点击链接跳转到Safari 浏览器新标签页
最近为了更好地接触移动Web 开发狠心购买了一台ipad mini(之前一直都是借同学的,借多了就不好意思了).拿来调试DeveMobile 与EaseMobile 主题 时候发现了不少问题,现在在一 ...
最新文章
- 【免费软件测试视频-0013】——Loadrunner9.0 SLA Analysis
- 使用Testcontainers和PostgreSQL,MySQL或MariaDB的Spring Boot测试
- 程序员面试金典 - 面试题 08.10. 颜色填充(BFS/DFS)
- Java多线程学习七:线程池的 4 种拒绝策略和 6 种常见的线程池
- 马斯克说,特斯拉卡车有Mad Max狂野模式,危险的变道操作?
- [BZOJ] 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场
- 快速设置 Docker 的三种网络代理配置
- Flash Professional CS6 安装zxp插件
- 登录服务器时显示 IE COOKIE阻止,复制Cookie跨域,为什么其他浏览器使用SCRIPT标记发送IE阻止Cookie...
- 小德,真的没想到,去年的千年德三子到现如今的现象级
- 在排查性能过程中如遇到cpu的wa高时该如何做(一)
- sublime text 3143 授权码
- ArcGIS API for JavaScript学习笔记(1)API本地部署
- 点到平面的基本距离推导公式
- IC卡读卡器卡号输出格式
- 那年杏花微雨,你说你是DOM
- Cisco 7600系列Supervisor Engine 720-3BXL
- Java复习第九章 多线程
- linux中文麻酱字_在家自制芝麻酱、芝麻香油,味道纯正无添加,原来做法这么简单...
- 西门子水处理1200PLC程序+触摸屏程序