iOS开发-应用之间的跳转及通信

简介

我们接下来将要实现应用程序之间的跳转及通讯。现在手机开发中,很多时候我们都需要在应用内跳转到别的应用中,这个是很常见的。

为此,我们首先需要准备两个项目ApplicationOneApplicationTwo

应用间的简单跳转

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)
        }
    }
}
  • 1: 创建urlString字符串
  • 2: 利用urlString字符串创建真正的url,并检测url是否有用
  • 3: 获得UIApplication实例
  • 4: 检测是否能够打开此url
  • 5: 打开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应用知道是从哪里跳转的,因此我们可以在ApplicationOneurl跳转事件把自身的URL Types协议传递给ApplicationTwo应用。像这样GC://GarveyCalvin&GCFirst
  • 这样我们就能在ApplicationTwo应用的application(_:openURL: sourceApplication:annotation:)方法中获取到ApplicationOne的协议,我们保存它,等到需要反向跳转的时候就可以使用它来进行跳转了。

Download

你们可以通过这个Git的链接去下载本文章所使用的完整项目源码。(ApplicationJumpAndSentValue).

参考文章

iOS开发拓展篇—应用之间的跳转和数据传递
iOS应用程序开发之应用间的跳转


博文作者:GarveyCalvin

博文出处:http://www.cnblogs.com/GarveyCalvin/

本文版权归作者和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值