译自:“LaunchingYour Own Application via a Custom URL Scheme”
iPhone SDK中最酷的功能之一是一个应用程序能够把自己和自定义的URL协议绑定,这个URL协议可用于启动该应用程序(通过浏览器或者iPhone上的另一个程序)。创建这样的绑定并不难,难的是你忍不住要在你的程序里用它!
首先,你需要说明你想如何在程序中响应这个URL。最简单的自定义协议的方法是“唤醒”,而且可以通过URL把信息传递给程序,这样,程序被唤醒后能做更多的事情。
注册自定义URL协议
首先需要向iPhone注册一个自定义URL协议。这是在你的项目文件夹的info.plist文件进行的(就是你改变应用程序图标的同一个文件)。
默认,Xcode在图形窗口中打开info.pllist,当然也可以直接用文本模式打开——对有的人来说这反而更简单。
Step1. 右键,选择“Add Row”
http://img.ph.126.net/0Iph-Hv_YPrI43zgkCotkw==/644859171660999084.png
Step2. Key值选择“URL types”
http://img.ph.126.net/9PtAWSrlCfLNZ5_W6Z_TnQ==/2651494280631266664.png
Step3. 打开“Item 1″,然后为该key增加一个URL identifier。可以是任何值,但建议用“反域名”(例如 “com.myapp”)。
http://img.ph.126.net/Rc90ogDPreD62FS2WYalvg==/2492460918789746022.png
Step4. 在“Item1”下再加一行。
http://img.ph.126.net/5EsyS1mPVhrFhctSYRU2dw==/2568459162501622413.png
Step5. 选择“URL Schemes” 作为Key。
http://img.ph.126.net/ba_lQpRIWvTcxfhB1FSJMg==/2723551874669194374.png
Step6. 输入你的URL协议名 (例如“myapp://” 应写做“myapp”)。如果有必要,你可以在这里加入多个协议。
http://img.ph.126.net/JaWpOJRaxAZdGwSM5ctwag==/2511601217206070303.png
注意:如果以文本模式打开info.plist,你会看到文件中添加了如下内容:
CFBundleURLTypes
CFBundleURLSchemes
myapp
CFBundleURLName
com.yourcompany.myapp
处理URL
现在,URL已经注册好了。任何人都可以用打开URL的方式通过你的协议去启动一个应用程序。
例如:
myapp://
myapp://some/path/here
myapp://?foo=1&bar=2
myapp://some/path/here?foo=1&bar=2
iOS SDK将向UIApplicationDelegate发送一条消息,启动和上述URL绑定的应用程序。
如果你想进行自定义处理,在你的delegate中实现该消息,例如:
- (BOOL)application:(UIApplication *)applicationhandleOpenURL:(NSURL*)url{ // Do something withthe url here }
通常,我们会从参数中解析出URL以便在视图中显示或者存储到UserPreference。下面的例子把URL存储为User Preference的url变量中:
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
if (!url) { return NO; }
NSString *URLString = [urlabsoluteString];
[[NSUserDefaultsstandardUserDefaults] setObject:URLString forKey:@"url"];
[[NSUserDefaultsstandardUserDefaults] synchronize];
return YES;
}
- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL *)url { if (!url) { returnNO; } NSString *URLString= [urlabsoluteString]; [[NSUserDefaults standardUserDefaults] setObject:URLStringforKey:@"url"]; [[NSUserDefaults standardUserDefaults] synchronize]; return YES; }
现在,你已经知道如何唤醒你的程序并向其传递参数了。Enjoy!
分享到:
相关推荐
本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信。文中讲及如何通过C#程序、手动修改、安装项目等不同方式对注册表进行修改。其中通过安装项目对注册表...
基于TCP协议的WCF调用简单程序,里面包含服务构建、自定义宿主托管程序,和客户端调用三个项目,WCF以TCP协议通信。
因此,我编写了一个更通用的处理程序应用程序,它允许您定义自己的自定义协议到应用程序+真实协议的映射。 任何允许 Windows 使用 URL“做它自己的事”的应用程序都应该能够找到并执行自定义处理程序,该处理程序...
RPC—远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。此项目用的是java+netty+zookeeper构建的自定义rpc框架。
此一步的目的是告诉windows,假如计算机请求的url是以"mofei://"为开头,就交给注册表中用户自定义的程序来处理,且整个请求的url内容作为启动参数,传递给应用程序。 例如在你的浏览器中打开 "mofei://hahaha",...
ulxmlrpcpp 是一个用来使用面向对象方式调用 XML-RPC 的C++库。可用来创建多线程的客户端和服务器端的应用,该库不只是针对HTTP协议的,还支持其他用户自定义协议。在HTTP协议上支持包括 cookie、SSL\TLS、代理、...
附件TcpSocket包含两个子项目,一个是Service,另一个是client。程序以本机作为服务器,因此IP设置为127.0.0.1。这两个项目的编写环境为Qt 5.7。
有没有一个网站程序能够在你做完网站后要添加新功能,而不用去修改程序代码导致程序升级功能不能用? 有没有一个网站程序可以让你设计网站的时候可以不受约束, 不去管她妈的程序怎么实现,自由自在的网页设计? ...
websocket是基于tcp协议的应用层协议,也就是建立在tcp协议之上的自定义协议。这个协议比http协议更加的简单,因为websocket只对协议的格式做要求,只要符合数据格式就可以使用。 websocket一般用来服务器主动推送...
有没有一个网站程序能够在你做完网站后要添加新功能,而不用去修改程序代码导致程序升级功能不能用? 有没有一个网站程序可以让你设计网站的时候可以不受约束, 不去管***的程序怎么实现,自由自在的网页设计? ...
RPC(Remote Procedure Call )——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI...
对于不支持GD库的空间,系统自动调用我自己编写的256色BMP图像输出函数,自定义生成256色BMP图片 以上步骤自动自己判断,无需设置 图像函数都保存在echo_img.php文件中 调用方法请参考img.php文件 2....
支持RSS订阅源的自定义调用:程序内置了百度风云榜调用规则,可以轻松在网页任何位置显示百度风云榜,并形成站内聚合搜索; 11. 支持站内聚合搜索:站内聚合搜索可以搜索站内内容,如果站内不存在的内容,可以...
书中详细介绍了Flex 3的相关知识点,具体包括构建、部署和调试RIA,使用功能强大的MXML语言布置应用程序,使用MXML和ActionScript构建自定义的UI组件,使用XML、基于SOAP的Web服务和远程调用协议AMF连接到数据等。...
codesys实现的串口通讯,软件版本为V3.5,含说明文档。
cc实例178 内存使用状态 cc实例179 监视剪贴板内容 cc实例180 利用钩子技术实现键盘监控 6.6 程序相关设置 cc实例181 用列表显示系统正在运行的程序 cc实例182 为程序添加快捷方式 cc实例183 设置其他...
实例109 使用HelpProvider组件调用帮助文件 159 3.6 Process组件 159 实例110 使用Process组件访问本地进程 159 3.7 Timer组件 161 实例111 使用Timer组件制作计时器 161 实例112 使用Timer组件显示当前系统...
1.3.2 在应用程序中使用虚拟内存 6 1.3.3 获取虚存状态 7 1.3.4 确定虚拟地址空间的状态 8 1.3.5 改变内存页面保护属性 9 1.3.6 进行一个进程的内存读写 10 1.4 文件的内存映射 11 1.4.1 内存映射API函数 11 ...
19.4 使用NSData创建自定义档案 19.5 使用归档程序复制对象 19.6 练习 第三部分 Cocoa和iPhone SDK 第20章 Cocoa简介 20.1 框架层 20.2 接触Cocoa 第21章 编写iPhone应用程序 21.1 iPhone SDK 21.2 第一个iPhone...