iOS 通过网址URL scheme传值

来源:互联网 发布:绝地战争源码 编辑:程序博客网 时间:2024/05/16 10:56

应用传值
前面说过,url scheme不仅仅支持应用跳转,它还支持使用类似get请求的方式在应用间传值。上面跳转的url scheme是LXDDrawLosts://,那么类似get请求,我们在这个字符串后面加上一个?表示区分开参数和应用id,使用&分隔不同参数,然后后面按照字段名=属性值的方式拼凑链接。
比如,假设这是一个即时通讯app,那么我可以制定这样的一个跳转参数规则:

method 表示操作类型
userId 用户id
title 分享标题
message 分享消息
link_url 分享链接
那么,如果传入的是
LXDDrawLosts://?method=addFriends&userId=10086
这可能代表的是扫描后添加id为10086的新好友。

又比如
LXDDrawLosts://?method=shareMessage&title=分享测试&message=这是林欣达的分享测试&link_url=http://www.jianshu.com/users/0cf7d455eb9e/latest_articles
这代表分享信息到你的app中。这些都是我们自己的应用可以制定的规则,如果有兴趣,可以新浪微博开放平台或者腾讯开放平台,他们的文档中应该有url scheme的传值标准。

说完了通过url scheme传入参数后,怎么把这些参数取出来呢?AppDelegate中提供了application:openURL: sourceApplication: annotation:方法让我们可以取出传入的值。
在我们通过url scheme跳转到本应用的时候,这个方法就会被系统调用。其中,有两个重要的参数需要我们知道

sourceApplication 这个字符串保存了跳转方app的url Identifier,就是上文中除了url scheme以外的另一个字段
url 这个链接中存储了跳转的url scheme以及参数列表,我们通过[url scheme]方法获取前者;用[url query]方法获取?之后的参数列表,然后使用字符串的分隔方法把这些数据读取出来

文/Sindri的小巢(简书作者)
原文链接:http://www.jianshu.com/p/4772d3cb6a43
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

0 0