码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-08-29 09:53:06      阅读:797      评论:0      收藏:0      [点我收藏+]

标签:ios   url   第三方应用   

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开发网站,不过是全英文的 :)




版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:ios   url   第三方应用   

原文地址:http://blog.csdn.net/nsnirvana/article/details/48084403

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!