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

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


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

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

UIApplication.sharedApplication().openURL(url)


以二维码应用为例:


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


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

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

iOS不同应用切换中URL Scheme的使用介绍_第1张图片






这里给一个名叫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是这个:

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

iOS不同应用切换中URL Scheme的使用介绍_第2张图片


本文是对Intermediate iOS Programming with Swift书中的WORKING WITH URL SCHEMES章节的要点提炼,这本书出自http://www.appcoda.com,不错的iOS开发网站,不过是全英文的 :)




你可能感兴趣的:(ios,url,第三方应用)