我們接下來(lái)將要實(shí)現(xiàn)應(yīng)用程序之間的跳轉(zhuǎn)及通訊?,F(xiàn)在手機(jī)開(kāi)發(fā)中,很多時(shí)候我們都需要在應(yīng)用內(nèi)跳轉(zhuǎn)到別的應(yīng)用中,這個(gè)是很常見(jiàn)的。
為此,我們首先需要準(zhǔn)備兩個(gè)項(xiàng)目applicationOne
和ApplicationTwo
。
在ApplicationOne
應(yīng)用跳轉(zhuǎn)到ApplicationTwo
應(yīng)用
我們需要先創(chuàng)建在ApplicationTwo
項(xiàng)目里設(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
,并檢測(cè)url
是否有用UIApplication
實(shí)例url
url
,在這里即為我們的應(yīng)用跳轉(zhuǎn)需要注意的是,協(xié)議開(kāi)頭必須要是完整的,即為
****://
實(shí)現(xiàn)方式很簡(jiǎn)單,我們只需要在url
協(xié)議里補(bǔ)充參數(shù)就可以了,比如我現(xiàn)在傳一個(gè)字符串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é)議后補(bǔ)充
n
個(gè)參數(shù),只需要雙方都能解析得到就行,具體的協(xié)議規(guī)則自行商議
然后在ApplicationTwo
應(yīng)用的AppDelegate
文件,我們需要實(shí)現(xiàn)如下方法去接收其它應(yīng)用傳進(jìn)來(lái)的參數(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}
我們要實(shí)現(xiàn)的是,從ApplicationOne
跳轉(zhuǎn)到ApplicationTwo
應(yīng)用,再?gòu)?code>ApplicationTwo跳轉(zhuǎn)回ApplicationOne
應(yīng)用里。
具體的實(shí)現(xiàn)步驟如下:
ApplicationOne
項(xiàng)目中添加URL Types
協(xié)議,具體看文章的上方,我們剛剛才做過(guò)。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)的時(shí)候就可以使用它來(lái)進(jìn)行跳轉(zhuǎn)了。你們可以通過(guò)這個(gè)Git的鏈接去下載本文章所使用的完整項(xiàng)目源碼。(ApplicationJumpAndSentValue).
iOS開(kāi)發(fā)拓展篇—應(yīng)用之間的跳轉(zhuǎn)和數(shù)據(jù)傳遞
iOS應(yīng)用程序開(kāi)發(fā)之應(yīng)用間的跳轉(zhuǎn)
博文作者:GarveyCalvin
博文出處:http://www.companysz.com/GarveyCalvin/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但須保留此段聲明,并給出原文鏈接,謝謝合作!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注