`
wangpengfei360
  • 浏览: 1062905 次
文章分类
社区版块
存档分类
最新评论

用自定义协议调用自己的程序

 
阅读更多

译自:“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!



分享到:
评论

相关推荐

    通过修改注册表建立Windows自定义协议

    本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信。文中讲及如何通过C#程序、手动修改、安装项目等不同方式对注册表进行修改。其中通过安装项目对注册表...

    基于TCP协议的WCF调用简单程序

    基于TCP协议的WCF调用简单程序,里面包含服务构建、自定义宿主托管程序,和客户端调用三个项目,WCF以TCP协议通信。

    ProtocolHelper:允许使用自定义协议创建和处理 URL 的帮助应用程序

    因此,我编写了一个更通用的处理程序应用程序,它允许您定义自己的自定义协议到应用程序+真实协议的映射。 任何允许 Windows 使用 URL“做它自己的事”的应用程序都应该能够找到并执行自定义处理程序,该处理程序...

    自定义rpc框架

    RPC—远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。此项目用的是java+netty+zookeeper构建的自定义rpc框架。

    通过浏览器拉起应用程序(私有协议)-易语言

    此一步的目的是告诉windows,假如计算机请求的url是以"mofei://"为开头,就交给注册表中用户自定义的程序来处理,且整个请求的url内容作为启动参数,传递给应用程序。 例如在你的浏览器中打开 "mofei://hahaha",...

    ulxmlrpcpp-1.7.5远程调用程序库

    ulxmlrpcpp 是一个用来使用面向对象方式调用 XML-RPC 的C++库。可用来创建多线程的客户端和服务器端的应用,该库不只是针对HTTP协议的,还支持其他用户自定义协议。在HTTP协议上支持包括 cookie、SSL\TLS、代理、...

    Qt上应用TcpSocket通信协议

    附件TcpSocket包含两个子项目,一个是Service,另一个是client。程序以本机作为服务器,因此IP设置为127.0.0.1。这两个项目的编写环境为Qt 5.7。

    Arlicle CMS企业整站程序

    有没有一个网站程序能够在你做完网站后要添加新功能,而不用去修改程序代码导致程序升级功能不能用? 有没有一个网站程序可以让你设计网站的时候可以不受约束, 不去管她妈的程序怎么实现,自由自在的网页设计? ...

    完结13章C++从0实现百万并发Reactor服务器

    websocket是基于tcp协议的应用层协议,也就是建立在tcp协议之上的自定义协议。这个协议比http协议更加的简单,因为websocket只对协议的格式做要求,只要符合数据格式就可以使用。 websocket一般用来服务器主动推送...

    Arlicle CMS企业整站程序.rar

    有没有一个网站程序能够在你做完网站后要添加新功能,而不用去修改程序代码导致程序升级功能不能用? 有没有一个网站程序可以让你设计网站的时候可以不受约束, 不去管***的程序怎么实现,自由自在的网页设计? ...

    rpc:第一届阿里巴巴中间件性能竞赛的远程过程调用(RPC)程序

    RPC(Remote Procedure Call )——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI...

    冰翎留言本程序 v2.1.rar

     对于不支持GD库的空间,系统自动调用我自己编写的256色BMP图像输出函数,自定义生成256色BMP图片  以上步骤自动自己判断,无需设置  图像函数都保存在echo_img.php文件中  调用方法请参考img.php文件 2....

    AMR采集系统(原万用小偷程序) v3.1

    支持RSS订阅源的自定义调用:程序内置了百度风云榜调用规则,可以轻松在网页任何位置显示百度风云榜,并形成站内聚合搜索; 11. 支持站内聚合搜索:站内聚合搜索可以搜索站内内容,如果站内不存在的内容,可以...

    《Flex3权威指南》涉及 源代码

    书中详细介绍了Flex 3的相关知识点,具体包括构建、部署和调试RIA,使用功能强大的MXML语言布置应用程序,使用MXML和ActionScript构建自定义的UI组件,使用XML、基于SOAP的Web服务和远程调用协议AMF连接到数据等。...

    CodeSys如何实现串口通信

    codesys实现的串口通讯,软件版本为V3.5,含说明文档。

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    cc实例178 内存使用状态 cc实例179 监视剪贴板内容 cc实例180 利用钩子技术实现键盘监控 6.6 程序相关设置 cc实例181 用列表显示系统正在运行的程序 cc实例182 为程序添加快捷方式 cc实例183 设置其他...

    C#程序开发范例宝典(第2版).part08

    实例109 使用HelpProvider组件调用帮助文件 159 3.6 Process组件 159 实例110 使用Process组件访问本地进程 159 3.7 Timer组件 161 实例111 使用Timer组件制作计时器 161 实例112 使用Timer组件显示当前系统...

    Windows应用程序捆绑核心编程光盘代码

    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 ...

    Objective-C2.0程序设计

    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...

Global site tag (gtag.js) - Google Analytics