您的位置:首页 > 其它

URL Scheme 使用过程中遇到的问题以及解决方案

2016-08-15 00:00 239 查看
摘要: URL Scheme 传值

URL Scheme是什么

相信大家都知道URL。

http://www.apple.com就是一个URL。

而://之前的部分就称为Scheme

(所以,你看,其实并没有什么难的,在这里多插一句给新人的话:不要看到新东西就觉得难,其实很多时候难的就是在于你看到新事物而不敢去研究)

也就是说http://www.apple.com的Scheme就是http。

iOS中的URL Scheme

iOS中的Scheme也是一样的,无非是定义应用自己的Scheme,然后定义一些自己的URL解析,就好像YourApp://OneController?username=xxx&userInput=xxx

有了这些URL Scheme你可以像网页跳转一样通过URL来传递参数、信息。

比如常见的分享功能,从其他应用点击微信分享,会自动跳转到微信APP的朋友圈发表动态页面,并填好相应的动态内容。你可以想象一下其URL Scheme可能是这样的:weixin://dl/moments?content=”今天在学习URL Scheme”&src=”zhoulingyu.com”(我只是举个例子)

有一点需要注意的是,和Web开发不同,iOS中并不是所有的页面或者操作都有URL Schemes,这完全是由你主导的的,如果你需要,你就可以自己定义一些,并去解析。

原文地址:http://blog.csdn.net/u010127917/article/details/50451251

由程序A跳转到程序B,需要现在B程序的info.plist文件中做如下配置:



右击选择 Add Row,key选择 URL types

点击左边箭头打开,可以看到 Item 0。打开Item 0,可以看到 URL Identifier,这是你自定义的 URL scheme 的名字。如果想保证唯一性,可以使用翻转域名。

点击 + 号增加一行,选择 URL Schemes

点击箭头打开,就可以在Item0中自定义URL Schemes。

代码:

UIApplication *app = [UIApplication sharedApplication];
NSString *path = @"myblock://";
NSURL *url = [NSURL URLWithString:path];
if ([app canOpenURL:url]) {//程序已经安装
[app openURL:url];
}

在使用过程中遇到了一些问题,现在记录如下:

failed for URL: "myblock://" - error: "This app is not allowed to query for scheme myblock"

解决方案:需要在A 程序的info.plist文件做如下修改: LSApplicationQueriesSchemes --> item0 myblock



这里LSApplicationQueriesSchemes是数组类型,所以跳转其他应用也需要做类似的操作。

传递参数

A中的代码如下:

UIApplication *app = [UIApplication sharedApplication];

NSString *path = @"myblock://?test";
NSURL *url = [NSURL URLWithString:path];
if ([app canOpenURL:url]) {//程序已经安装
[app openURL:url];
}

其中test是作为测试的参数,字符串"?test" 在web开发中被称作query string。 要想接收次参数,还需要在B程序的AppDelegate添加如下代码:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
{

NSLog(@" %@ -- %@ ",[url scheme],[url query]);

return YES;
}

运行可以看到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: