我们接下来将要实现应用程序之间的跳转及通讯。现在手机开发中,很多时候我们都需要在应用内跳转到别的应用中,这个是很常见的。
为此,我们首先需要准备两个项目 ApplicationOne
和 ApplicationTwo
。
在 ApplicationOne
应用跳转到 ApplicationTwo
应用
我们需要先创建在 ApplicationTwo
项目里设置 URL Types
协议,这里我设置为 GC
,如下所示
在 ApplicationOne
应用添加事件
@IBAction func openApplication() { // 1 let urlSting = "GC://" // 2 if let url = NSURL(string: urlSting) { // 3 let application = UIApplication.sharedApplication() // 4 if application.canOpenURL(url) { // 5 application.openURL(url) } } }
urlString
字符串 urlString
字符串创建真正的 url
,并检测 url
是否有用 UIApplication
实例 url
url
,在这里即为我们的应用跳转 需要注意的是,协议开头必须要是完整的,即为 ****://
实现方式很简单,我们只需要在 url
协议里补充参数就可以了,比如我现在传一个字符串 GarveyCalvin
现在事件的代码是这样的
@IBAction func openApplication() { let urlSting = "GC://GarveyCalvin" if let url = NSURL(string: urlSting) { let application = UIApplication.sharedApplication() if application.canOpenURL(url) { application.openURL(url) } } }
你可以在协议后补充 n
个参数,只需要双方都能解析得到就行,具体的协议规则自行商议
然后在 ApplicationTwo
应用的 AppDelegate
文件,我们需要实现如下方法去接收其它应用传进来的参数
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { let newUrlHost: NSString = url.absoluteString ?? "" let range = newUrlHost.rangeOfString("//") if range.length != NSNotFound { let params = newUrlHost.substringFromIndex(range.length) UIAlertView(title: "params is /(params)", message: nil, delegate: nil, cancelButtonTitle: "Confirm").show() } else { UIAlertView(title: "haven't params", message: nil, delegate: nil, cancelButtonTitle: "Confirm").show() } return false }
我们要实现的是,从 ApplicationOne
跳转到 ApplicationTwo
应用,再从 ApplicationTwo
跳转回 ApplicationOne
应用里。
具体的实现步骤如下:
ApplicationOne
项目中添加 URL Types
协议,具体看文章的上方,我们刚刚才做过。 ApplicationTwo
应用知道是从哪里跳转的,因此我们可以在 ApplicationOne
的 url
跳转事件把自身的 URL Types
协议传递给 ApplicationTwo
应用。像这样 GC://GarveyCalvin&GCFirst
ApplicationTwo
应用的 application(_:openURL: sourceApplication:annotation:)
方法中获取到 ApplicationOne
的协议,我们保存它,等到需要反向跳转的时候就可以使用它来进行跳转了。 你们可以通过这个Git的链接去下载本文章所使用的完整项目源码。( ApplicationJumpAndSentValue ).
iOS开发拓展篇—应用之间的跳转和数据传递
iOS应用程序开发之应用间的跳转博文作者:GarveyCalvin
博文出处: http://www.cnblogs.com/GarveyCalvin/
本文版权归作者和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作!