使用openURL实现程序间带参数跳转详解
使用openURL实现程序间带参数跳转详解

实现的效果:有两款应用A与B,A打开B
A --> B
1. 新建工程B,bundle ID为com.YouXianMing.B

建立一个URL

这么填写(与前面bundle ID类似的写法):

2. 新建工程A,bundle ID随便起,为简单起见,写下如下代码
NSURL *url = [NSURL URLWithString:@"B://com.YouXianMing"];
if ([[UIApplication sharedApplication] canOpenURL:url])
{
NSLog(@"跳转并打开");
[[UIApplication sharedApplication] openURL:url];
}
else
{
NSLog(@"打开失败");
}

先执行B(安装应用B),在执行应用A,你会发现可以正常从A应用跳转到B应用了.
很简单吧!
我们再来实现可以传递参数的
实现的效果:有两款应用A与B,A打开B,并传递一些参数
参数
A -----> B
1. A中代码这么写
// 其他应用的 URL Schemes --> B
// 其他应用的 Identifier --> com.YouXianMing
// values? --> 要传递的参数,方便解析
NSURL *url = [NSURL URLWithString:\
@"B://com.YouXianMing/values?username=WT&password=123456&callback=invoking"];
if ([[UIApplication sharedApplication] canOpenURL:url])
{
NSLog(@"跳转并打开");
[[UIApplication sharedApplication] openURL:url];
}
else
{
NSLog(@"打开失败");
}

2. 在B应用中请添加如下方法到AppDelegate.m中
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
if ([[url scheme] isEqualToString:@"B"])
{
if ([[url host] isEqualToString:@"com.YouXianMing"])
{
/*
query用法 The query string from the URL.
If the receiver does not conform to RFC 1808, returns nil. For example,
in the URL http://www.example.com/index.php?key1=value1&key2=value2,
the query string is key1=value1&key2=value2.
*/
NSString *query = [url query]; // 分割&
NSArray *array = [query componentsSeparatedByString:@"&"]; // 显示数据
NSLog(@"%@", array);
} return YES;
} return NO;
}

3. 执行A程序后,注意观察B程序的打印信息:
2014-04-21 13:06:00.277 B[1683:60b] (
"username=WT",
"password=123456",
"callback=invoking"
)
实现的效果:有两款应用A与B,A打开B并传参数,B打开A并传参数
太简单了,略.
小结:
1. 如果A应用想被B应用打开,需要在A应用中设置URL,在设置中需要设置URL identifier 以及 URL Schemes,作为这个应用的标示
2. A既要打开B,B也能够打开A,那就需要AB两款应用都设置URL了
3. 可以传递字符串的参数
使用openURL实现程序间带参数跳转详解的更多相关文章
- 微信小程序页面带参数跳转
页面传递参数的方式 data-para js获取参数
- 小程序之带参数跳转到tab页
wx.switchTab({ url: '../../message/message/message', }) //wx.switchTab url不能带参数 解决方法⬇️ (紫色表示非固定需要自己更 ...
- 微信小程序页面带参数跳转及接收参数内容navigator
功能从index页面跳转到draw页面,并在draw页面获取id及imgUrl index.wxml <navigator class='looks-view' wx:for="{{i ...
- 微信小程序navigator带参数跳转及接收参数内容
// index.wxml <navigator class='looks-view' wx:for="{{imgUrlNew}}" wx:key="index&q ...
- Java程序调用带参数的shell脚本返回值
Java程序调用带参数的shell脚本返回值 首先来看看linux中shell变量(\(#,\)@,$0,$1,\(2)的含义解释 变量说明: - \)$ Shell本身的PID(ProcessI ...
- 10.vue router 带参数跳转
vue router 带参数跳转 发送:this.$router.push({path:'/news',query:{id:row.id}}) 接收:var id=this.$route.query. ...
- vue-如何实现带参数跳转页面
[前后端分离项目之vue框架经验总结] 文/朱季谦 在vue框架的前端页面上,若要实现页面之间的带参数跳转,可参考以下实现过程: 例如,点击截图中的“查看试卷”,可实现带参跳转到相应的试卷页面,该功能 ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- (转)linux traceroute命令参数及用法详解--linux跟踪路由命令
linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...
随机推荐
- Merge k Sorted Lists——分治与堆排序(需要好好看)
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 1 ...
- JavaScript 执行环境 与 变量对象
什么是JS的执行环境? function funA(){ //一段代码静静的躺在这里,不能叫执行环境 } funA(); //当代码开始执行以后,系统会将它存入执行栈,并为他准备好足够的内存空间使用 ...
- MVC – 7.Razor 语法
7.1 Razor视图引擎语法 Razor通过理解标记的结构来实现代码和标记之间的顺畅切换. @核心转换字符,用来 标记-代码 的转换字符串. 语境A: @{ string rootName=&quo ...
- bzoj 4518
4518 思路: 斜率优化: 代码: #include <cstdio> #include <cstring> #include <iostream> #inclu ...
- (转)Where与Having的总结
Where 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数. Having 是一个过滤声明,是在查询返回结果集以后对查询结果进 ...
- Socket编程(一):建立与客户端的连接并接受数据
我们这里利用Socket在模拟一个客户端与服务器通信,其实客户端与服务端通信就像人与人打电话一样,想要给一个人打电话,我们首先必须要有手机,必须知道对方的手机号码,这里Socket就好比一部手机,而短 ...
- Spring Boot 整合MyBatis(1)
这篇文章介绍如何在Spring boot中整合Mybatis,其中sql语句采用注解的方式插入.后续文章将会介绍,如何使用xml方式. SSM SSH框架已经满足轻量级这个需求了,但是对于开发人员而言 ...
- Visual Studio 2017为Android APK包签名
Visual Studio 2017为Android APK包签名 为Android APK包签名,可以保证后期的App顺利升级.在Visual Studio 2015中,IDE会自动生成两个AP ...
- 【BZOJ 1853】 1853: [Scoi2010]幸运数字 (容斥原理)
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 2472 Solved: 911 Description 在中国 ...
- 「CSA72」MST
「CSA72」MST 题目大意:有一个大小为 \(n\) 的无向完全图,\(x, y\) 之间的边权值为 \(a[\min(x,y)][\max(x,y)]\) ,初始为0,进行 \(m\) 次修改, ...