使用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. span文字里面自动换行时怎么办

    可以用white-space:nowrap来强制文字不换行,知道遇到<br>为止

  2. XSS与CSRF两种跨站攻击总结

    在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是 ...

  3. GDB调试实用命令

    个人感觉从windows平台转到linux平台一个不适应的地方就是调试器的使用.因为windows下调试器基本上都依赖快捷键和图像界面来完成操作,就算是windbg这种伪命令行的工具,命令也很简单比较 ...

  4. 【LOJ】 #2015. 「SCOI2016」妖怪

    题解 这道题教会我很多东西,虽然它是个傻逼三分 1.long double的运算常数是巨大的 2.三分之前的界要算对!一定要算准,不要想一个直接写上! 3.三分100次也就只能把精度往里推20多位,可 ...

  5. lr11_Vugen_Genrial Options选项介绍:

    lr11_Vugen_Genrial Options选项介绍:

  6. list 移除值

    1. 移除基本类型值时,传入int 会以下标为依据移除 , 但传入Integer 对象时,则是移除对象为依据移除(即不受此对象代表的值相等的下标的影响) 都是只能移除一个值,(list 中有多个1时, ...

  7. 【转】django 与 vue 的完美结合 实现前后端的分离开发之后在整合

    https://blog.csdn.net/guan__ye/article/details/80451318   最近接到一个任务,就是用django后端,前段用vue,做一个普通的简单系统,我就是 ...

  8. HDU 6188 Duizi and Shunzi

    栈. 将数字排序后,一个一个压入栈.如果栈顶两个元素形成了对子,那么$ans+1$,弹出栈顶两个元素:如果栈顶三个元素形成了顺子,那么$ans+1$,弹出栈顶三个元素. #include<bit ...

  9. GPFS 安装测试

    简介 GPFS(General Parallel File System ,GPFS) 是 IBM 公司第一个共享文件系统,起源于 IBM SP 系统上使用的虚拟共享磁盘技术( VSD ).作为这项技 ...

  10. 线性DP POJ 1159 Palindrome

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 59101   Accepted: 20532 Desc ...