我們接下來將要實現應用程序之間的跳轉及通訊?,F在手機開發中,很多時候我們都需要在應用內跳轉到別的應用中,這個是很常見的。
為此,我們首先需要準備兩個項目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.49028c.com/GarveyCalvin/
本文版權歸作者和博客園共有,歡迎轉載,但須保留此段聲明,并給出原文鏈接,謝謝合作!
新聞熱點
疑難解答