URL Scheme 使用过程中遇到的问题以及解决方案
2016-08-15 00:00
239 查看
摘要: URL Scheme 传值
http://www.apple.com就是一个URL。
而://之前的部分就称为Scheme
(所以,你看,其实并没有什么难的,在这里多插一句给新人的话:不要看到新东西就觉得难,其实很多时候难的就是在于你看到新事物而不敢去研究)
也就是说http://www.apple.com的Scheme就是http。
有了这些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。
代码:
在使用过程中遇到了一些问题,现在记录如下:
failed for URL: "myblock://" - error: "This app is not allowed to query for scheme myblock"
解决方案:需要在A 程序的info.plist文件做如下修改: LSApplicationQueriesSchemes --> item0 myblock
这里LSApplicationQueriesSchemes是数组类型,所以跳转其他应用也需要做类似的操作。
传递参数
A中的代码如下:
其中test是作为测试的参数,字符串"?test" 在web开发中被称作query string。 要想接收次参数,还需要在B程序的AppDelegate添加如下代码:
运行可以看到
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; }
运行可以看到
相关文章推荐
- Ubutun使用过程中遇到的问题以及解决方案
- Webstrom 使用过程中遇到的问题以及解决方案
- 使用Linux过程中遇到的问题以及解决方案
- 使用easyui过程中遇到的问题及解决方案积累中...
- 使用RabbitMQ过程中遇到的一个问题(队列为空,但内存暴涨)以及与开发者的邮件沟通
- Jquery ajaxSubmit()使用案例以及遇到的问题解决方案
- Eclipse使用过程遇到问题及解决方案
- Android Studio使用过程中遇到的一些问题及解决方案
- file_put_contents以及file_get_contents的用法与在使用过程中遇到的问题(PHP学习)
- MyEclipse使用过程中遇到的问题和解决方案
- Maven使用过程中遇到的问题及解决方案
- 使用SSH过程中遇到的几个问题及解决方案
- Ubuntu 8.10使用过程中遇到的问题及解决方案
- ADS1.2环境使用过程中遇到的问题及解决方案
- UIKit和Cocos2d-x的整合使用;设置CCEAGLView背景为透明,来显示背后的UIView; 以及整合中遇到的问题的解决方案
- eclipse使用技巧以及开发安卓程序过程中遇到的问题
- 关于SpringMVC4使用过程中的路径问题,我们经常遇到的Controller未执行以及执行了之后出现404
- 使用Git 过程中遇到的几个问题及其解决方案
- Android Studio使用过程中遇到的一些问题及解决方案
- 免费git服务器以及使用过程中遇到的问题