我們接下來將要實現(xiàn)應(yīng)用程序之間的跳轉(zhuǎn)及通訊。現(xiàn)在手機(jī)開發(fā)中,很多時候我們都需要在應(yīng)用內(nèi)跳轉(zhuǎn)到別的應(yīng)用中,這個是很常見的。
為此,我們首先需要準(zhǔn)備兩個項目applicationOne
和ApplicationTwo
。
在ApplicationOne
應(yīng)用跳轉(zhuǎn)到ApplicationTwo
應(yīng)用
我們需要先創(chuàng)建在ApplicationTwo
項目里設(shè)置URL Types
協(xié)議,這里我設(shè)置為GC
,如下所示
在ApplicationOne
應(yīng)用添加事件
@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
字符串創(chuàng)建真正的url
,并檢測url
是否有用UIApplication
實例url
url
,在這里即為我們的應(yīng)用跳轉(zhuǎn)需要注意的是,協(xié)議開頭必須要是完整的,即為
****://
實現(xiàn)方式很簡單,我們只需要在url
協(xié)議里補充參數(shù)就可以了,比如我現(xiàn)在傳一個字符串GarveyCalvin
現(xiàn)在事件的代碼是這樣的
@IBAction func openApplication() { let urlSting = "GC://GarveyCalvin" if let url = NSURL(string: urlSting) { let application = UIApplication.sharedApplication() if application.canOpenURL(url) { application.openURL(url) } }}
你可以在協(xié)議后補充
n
個參數(shù),只需要雙方都能解析得到就行,具體的協(xié)議規(guī)則自行商議
然后在ApplicationTwo
應(yīng)用的AppDelegate
文件,我們需要實現(xiàn)如下方法去接收其它應(yīng)用傳進(jìn)來的參數(shù)
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}
我們要實現(xiàn)的是,從ApplicationOne
跳轉(zhuǎn)到ApplicationTwo
應(yīng)用,再從ApplicationTwo
跳轉(zhuǎn)回ApplicationOne
應(yīng)用里。
具體的實現(xiàn)步驟如下:
ApplicationOne
項目中添加URL Types
協(xié)議,具體看文章的上方,我們剛剛才做過。ApplicationTwo
應(yīng)用知道是從哪里跳轉(zhuǎn)的,因此我們可以在ApplicationOne
的url
跳轉(zhuǎn)事件把自身的URL Types
協(xié)議傳遞給ApplicationTwo
應(yīng)用。像這樣GC://GarveyCalvin&GCFirst
ApplicationTwo
應(yīng)用的application(_:openURL: sourceApplication:annotation:)
方法中獲取到ApplicationOne
的協(xié)議,我們保存它,等到需要反向跳轉(zhuǎn)的時候就可以使用它來進(jìn)行跳轉(zhuǎn)了。你們可以通過這個Git的鏈接去下載本文章所使用的完整項目源碼。(ApplicationJumpAndSentValue).
iOS開發(fā)拓展篇—應(yīng)用之間的跳轉(zhuǎn)和數(shù)據(jù)傳遞
iOS應(yīng)用程序開發(fā)之應(yīng)用間的跳轉(zhuǎn)
博文作者:GarveyCalvin
博文出處:http://www.survivalescaperooms.com/GarveyCalvin/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但須保留此段聲明,并給出原文鏈接,謝謝合作!
新聞熱點
疑難解答