使用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实现程序间带参数跳转详解的更多相关文章

  1. 微信小程序页面带参数跳转

    页面传递参数的方式 data-para js获取参数

  2. 小程序之带参数跳转到tab页

    wx.switchTab({ url: '../../message/message/message', }) //wx.switchTab url不能带参数 解决方法⬇️ (紫色表示非固定需要自己更 ...

  3. 微信小程序页面带参数跳转及接收参数内容navigator

    功能从index页面跳转到draw页面,并在draw页面获取id及imgUrl index.wxml <navigator class='looks-view' wx:for="{{i ...

  4. 微信小程序navigator带参数跳转及接收参数内容

    // index.wxml <navigator class='looks-view' wx:for="{{imgUrlNew}}" wx:key="index&q ...

  5. Java程序调用带参数的shell脚本返回值

    Java程序调用带参数的shell脚本返回值 首先来看看linux中shell变量(\(#,\)@,$0,$1,\(2)的含义解释 变量说明: -  \)$  Shell本身的PID(ProcessI ...

  6. 10.vue router 带参数跳转

    vue router 带参数跳转 发送:this.$router.push({path:'/news',query:{id:row.id}}) 接收:var id=this.$route.query. ...

  7. vue-如何实现带参数跳转页面

    [前后端分离项目之vue框架经验总结] 文/朱季谦 在vue框架的前端页面上,若要实现页面之间的带参数跳转,可参考以下实现过程: 例如,点击截图中的“查看试卷”,可实现带参跳转到相应的试卷页面,该功能 ...

  8. linux管道命令grep命令参数及用法详解---附使用案例|grep

    功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

  9. (转)linux traceroute命令参数及用法详解--linux跟踪路由命令

    linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...

随机推荐

  1. apache2.2控制目录文件访问设置

    1.apache2.2控制目录文件访问需求 红框可以访问,其他不能访问 2.apache2.2具体正则配置 <locationMatch ^/f/user/Panorama/81/581/(gr ...

  2. Java学习(基本语句,语法,变量)

    一.基本语法: public class Demo { //定义一个类 public static void main(String[] args) { //主方法,一切程序的起点 /* 在屏幕上打印 ...

  3. 谷歌翻译python接口

    项目地址:  https://github.com/ssut/py-googletrans 安装: sudo pip install googletrans 使用: #!/usr/bin/python ...

  4. ie6 css 返回顶部图标固定在浏览器右下角

    比较常用记录一下. #e_float{ _position:absolute; _bottom:auto; _right:50%; _margin-right:-536px; _top:express ...

  5. 【C#】编码史记

    计算机中的字是如何处理的? 如果你用放大镜看一下,可以看出屏幕上的字是由一个一个的像素点组成的,每一个字符用一组像素点拼接出来,这些像素点组成一幅图像,变成了我们的文字,计算机又是如何将我们的文字保存 ...

  6. JDOM读取xml

    [摘 要]JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析.生成.序列化以及多种操作. 一.JDOM 简介 JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术 ...

  7. 爱奇艺全国高校算法大赛初赛C

    区间$dp$. 倒着考虑这件事件,肯定有最后一个取走的数字,假设是$a[k]$,那么最后一次取走的价值肯定是$a[0]*a[k]*a[n+1]$,之前取走的价值和为$[1,k-1]$的价值加上$[k+ ...

  8. SCU 4441 Necklace

    最长上升子序列,枚举. 因为$10000$最多只有$10$个,所以可以枚举采用哪一个$10000$,因为是一个环,所以每次枚举到一个$10000$,可以把这个移到最后,然后算从前往后的$LIS$和从后 ...

  9. Hadamard product

    按元素乘积. python中Hadamard product和matrix product的区分: For numpy.ndarray objects, * performs elementwise ...

  10. [SDOI2017]数字表格 --- 套路反演

    [SDOI2017]数字表格 由于使用markdown的关系 我无法很好的掌控格式,见谅 对于这么简单的一道题竟然能在洛谷混到黑,我感到无语 \[\begin{align*} \prod\limits ...