通过URL Scheme在应用间传递参数(Swift)

App间的通信需要通过URL Scheme来实现。

1、需要为待启动的应用设置一个系统唯一标志字符串,避免与系统自带的标志字符串重名。例如:mailto、tel、facetime、sms、http://maps.apple.com/等等。

2、在info中设置该应用的标志字符串


3、在AppDelegate中设置处理url的方法

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
    println(url.query!)
    UIAlertView(title: "test", message: "opened", delegate: nil, cancelButtonTitle: "OK").show()
    return true
}



在这个方法中,url为发送请求方的url,sourceApplication为发送请求的应用bundle Identifier,在方法实现中使用url.query来获取传入的参数。若发送请求方发送的url为iossocket://?name=iossocket&tel=1371234567,那么url.query为name=iossocket&tel=1371234567。

4、对应请求发送方,发送该url时调用方法如下所示:

func openUrl() {
    var url: NSURL = NSURL(string: "iossocket://?name=iossocket&phone=1371234567")!
    if UIApplication.sharedApplication().canOpenURL(url) {
        UIApplication.sharedApplication().openURL(url)
    } else {
        //提示用户去下载该应用
    }
}



5、该url同时也可以通过Safari来进行发送。

你可能感兴趣的:(Scheme,url,swift)