在IOS的应用中经常会看到一些应用程序通过某个点击动作而直接跳到App Store页面,开始很奇怪这种第三方应用于IOS的系统应用交互时怎么实现的。后来发现苹果的开发者文档中关于这种通信的实现是默认支持的,只要第三方 的应用符合规范即可,这里的规范就是指接下来我们要简单介绍的东西——URL Schemes。
根据规定,IOS中支持几种特殊的URL schemes,第三方的本地应用程序和运行在Safari的Web应用程序,通过这些URL schemes可以与IOS的系统应用进行整合,为的是为用户提供一种无缝的用户体验过程。某些手机IOS应用中都会展示一些电话号码信息,在用户点击这 些号码时,通过使用规定内合适的URL,应用程序可以打开手机的Phone Application进行拨号呼叫操作。这是一种很快捷的方式,省去了用户要记忆号码,然后再逐次拨号的流程。
1.URL scheme打开方式
根据第三方应用程序的类型,打开IOS系统应用的方式划分为两种
(1) Native App或我们常称呼的本地应用,可以通过UIApplication的openURL:方法来系统应用
(2)Web App或我们常称呼的Web应用,指的是那些运行在Safari浏览器中或通过UIWebView 内嵌入本地应用的的Web应用程序,可以通过点击或长按操作打开系统应用。
当然,顺利打开系统应用的前提是二者都要保证提供指定的附和规范的URL scheme。
2.URL Scheme分类
IOS支持的URL Schemes分为以下几类
(1)Mail Links(邮件链接)
通过mailto协议来加载Mail应用程序,只要提供目标邮箱地址即可,代码如下
HTML页面中
<a href="mailto:[email protected]">John Frank</a>
本地应用中
if(![[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"mailto:[email protected]"]] ){ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"无法打开程序" delegate:nil cancelButtonTitle:@"确认" otherButtonTitles: nil] ; [alert show] ; }
另外也可以通过to,cc,bcc,subject,body字段来指定邮件的抄送,密送,主题,消息内容。参数值都要经过URL编码处理。
mailto:[email protected][email protected]&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!
(2)Phone links(电话链接)
tel协议用来启动Phone 应用,以及呼叫指定的号码。在网页上点击一个号码链接会弹出一个对话框来提示用户是否需要拨号,并在用户允许后开始拨号。在本地的应用中,打开 一个tel协议地址会直接拨号而对用户提示。如下 HTMl页面中
<a href="tel:1-408-555-5555">1-408-555-5555</a>
本地应用中
if(![[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"tel:1-408-555-5555"]] ){ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"无法打开程序" delegate:nil cancelButtonTitle:@"确认" otherButtonTitles: nil] ; [alert show] ; }
新闻热点
疑难解答