您的位置:首页 > 移动开发 > IOS开发

iOS不同应用切换中URL Scheme的使用介绍

2015-08-29 08:34 465 查看
URL Scheme是iOS SDK提供给开发者的通过URL打开系统或第三方应用的方式,iOS开发中常见的几种需求,比如分享到微信微博,或调用支付宝支付之类的调用其他应用,以及调用完后,第三方应用对自己的回调都需要用到URL Scheme的知识,关于URL Scheme有这么几点需要了解

一、怎么通过一个应用的URL Scheme打开对应应用的对应页面

从一个应用切换到另一个应用所调用的关键方法是UIApplication的单例方法openURL:

UIApplication.sharedApplication().openURL(url)


以二维码应用为例:



当你用手机扫描二维码后,二维码就会被解析为下面的URL,然后openURL:方法被调用即可打开对应的应用,比如当你扫描mailto:support@appcoda.com时,系统就会询问你是否要打开Mail应用发邮件给support@appcoda.com,在这个例子中Mail应用的URL
Scheme是mailto,冒号后面的是传递给这个应用的消息,二维码应用通过这个方法打开其它应用,你也可以在自己的应用中采用该方法来打开其它应用,其它iOS应用的URL Scheme在网络上都能找到,传入什么消息会打开什么特定页面在开发文档里都会有写

二、怎么创建自己的URL Scheme以供其他应用回调

这里直接上图了,熟悉Xcode环境的人应该很容易知道怎么做,这是方法之一:







这里给一个名叫TextReader的应用添加了URL Scheme: “textreader” 如上图所示

但是只设置自己应用的URL Scheme是不够的,你需要对伴随URL而来的消息做处理以打开对应页面,对消息进行处理的,是项目中AppDelegate文件中的AppDelegate类所遵守的UIApplicationDelegate协议定义的方法:

application(_:openURL:sourceApplication:annotation:)


你需要实现这个方法来对传入的消息做出反应

这是上面的TextReader项目的处理函数:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { let message = url.host?.stringByReplacingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
let alertController = UIAlertController(title: "Incoming Message", message: message, preferredStyle: .Alert)
let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)
alertController.addAction(okAction)

window?.rootViewController?.presentViewController(alertController, animated: true, completion: nil)

return true
}


当它收到消息的时候,就会弹出一个AlertView来展示接收到的消息内容,举个例子,如果传入的URL是这个:



当这个应用被调用时就会出现:



本文是对Intermediate iOS Programming with Swift书中的WORKING WITH URL SCHEMES章节的要点提炼,这本书出自http://www.appcoda.com,不错的iOS开发网站,不过是全英文的
:)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: