iOS開發-應用之間的跳轉及通訊
Update
2016-08-12: 在Github的Demo上增加Mac自定義Url Scheme,可以在Safari上輸入特定協議頭開啟應用,並傳遞引數)
簡介
我們接下來將要實現應用程式之間的跳轉及通訊。現在手機開發中,很多時候我們都需要在應用內跳轉到別的應用中,這個是很常見的。
為此,我們首先需要準備兩個專案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) } } }
- 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
應用知道是從哪裡跳轉的,因此我們可以在ApplicationOne
的url
跳轉事件把自身的URL Types
協議傳遞給ApplicationTwo
應用。像這樣GC://GarveyCalvin&GCFirst
- 這樣我們就能在
ApplicationTwo
應用的application(_:openURL: sourceApplication:annotation:)
方法中獲取到ApplicationOne
的協議,我們儲存它,等到需要反向跳轉的時候就可以使用它來進行跳轉了。
適配iOS9
有一位git友提醒了我,在iOS9
下執行報以下錯誤(issue):
-canOpenURL: failed for URL: "GC://GarveyCalvin&GCFirst" - error: "This app is not allowed to query for scheme GC"
這是因為在iOS9
中,蘋果做了嚴格的限制,我們想要調起這個url
,必須要手動新增白名單,這樣蘋果才會"放行"。我們需要在info.plist
裡新增
<key>LSApplicationQueriesSchemes</key>
<array>
<string>GC</string>
</array>
LSApplicationQueriesSchemes
是一個數組,用於存放url
白名單
Download
參考文章
博文作者:GarveyCalvin
博文出處:http://www.cnblogs.com/GarveyCalvin/
本文版權歸作者和部落格園共有,歡迎轉載,但須保留此段宣告,並給出原文連結,謝謝合作!
相關推薦
iOS開發-應用之間的跳轉及通訊
Update 2016-08-12: 在Github的Demo上增加Mac自定義Url Scheme,可以在Safari上輸入特定協議頭開啟應用,並傳遞引數) 簡介 我們接下來將要實現應用程式之間的跳轉及通訊。現在手機開發中,很多時候我們都需要在應用內跳轉到別的應用中,這個是很常見的。 為此,我們首先需要準備
iOS開發中應用內跳轉到QQ聊天介面和指定的聯絡人聊天
這裡主要是記錄專案中的一個需求,閒著沒事就把它記錄下來,以供有需要的朋友們; 我們一般用webview載入,所以主要的是設定在它的跳轉路徑上; 這裡有兩個路徑,介紹分別如下; 1. mqq://im/chat?chat_type=wpa&uin=好友QQ號&
IOS應用內及應用之間跳轉URL
蜂窩網路:prefs:root=MOBILE_DATA_SETTINGS_ID網路: prefs:root=General&path=Network/***Wi-Fi: prefs:root=WIFI定位服務:prefs:root=LOCATION_SERVICES個人熱點:prefs
kotlin activity 之間跳轉及傳參
gradle中實現 implementation "org.jetbrains.anko:anko-commons:0.10.3 startActivity(this!!.intentFor<UploadActivity>() .putExtra("",""
iOS開發app間相互跳轉以及appStore和系統設定
1.app間相互跳轉 (1)兩個專案,這裡我們暫且說專案A和專案B。 (2)專案A跳轉到專案B。 步驟1:開啟專案B工程 找到info 目錄下的URL Types,點選+號進行新增,然後設定URL schemes。 (3)將專案B的URL schemes 記錄下來,以便在專
iOS 多個tabBar之間跳轉的問題
最近在忙一款應用,裡面有多個tabBar,因為以前只接觸過單個tabBar的程式,沒遇見過這樣的需求,所以說也是各種查資料,各種試驗,今天終於弄出來了,可能我的方法有點初級,但是我還是想發出來和大家分享一下。不多說,上程式碼~ 首先,因為存在tabBar,所以他們之間的點選
spring mvc controller接收請求值及controller之間跳轉及傳值
1,使用HttpServletRequest獲取 Java程式碼 @RequestMapping("/login.do") public String login(HttpServletRequest request){ String name
iOS開發-使用Storyboard進行介面跳轉及傳值
前言:蘋果官方是推薦我們將所有的UI都使用Storyboard去搭建,Storyboard也是一個很成熟的工具了。使用Storyboard去搭建所有介面,我們可以很迅捷地搭建出複雜的介面,也就是說能為我們節省大量的時間。我們還可以很直觀地看出各個介面之間的關係,修改起來也很方便。將來如果遇到需要作修改的地
iOS開發 之 應用間相互跳轉
gpo 用戶隱私 spa container 下載 containe canopen itunes cep 1. 應用間相互跳轉簡介 在iOS開發的過程中,我們經常會遇到需要從一個應用程序A跳轉到另一個應用程序B的場景。這就需要我們掌握iOS應用程序之間的相互跳轉知識。
iOS開發-兩個APP之間跳轉、傳值
兩個APP之間的跳轉是通過[[UIApplication sharedApplication] openURL:url]這種方式來實現的。 1.首先設定第一個APP的url地址 2.接著設定第二個APP的url地址 3.需要跳轉的時候 NSString
iOS 連個應用之間的跳轉
iPhone / iOS SDK 最酷的特性之一就是應用將其自身”繫結”到一個自定義 URL scheme 上,該 scheme 用於從瀏覽器或其他應用中啟動本應用。 註冊自定義 URL Scheme 註冊自定義 URL Scheme 的第一步是建立 URL Scheme — 在 Xcode Pro
ios開發-APP之間跳轉
原文地址:http://blog.csdn.net/grozy_sun/article/details/11321081 設想:如果App1能再自己中開啟App2,那麼App1開啟自己是不是就能開啟自己了呢。後來就簡單的去實現了一下,結果失敗了,有同樣想法的就放棄吧,但
.Net語言 APP開發平臺——Smobiler學習日誌:在手機應用開發中如何實現跳轉地圖
demo hand 操作 窗體 clas com ps1 ati void 一、目標樣式 我們要實現上圖中的效果,需要如下的操作: 二、跳轉地圖代碼 VB: Private Sub Button1_Click(sender As Object, e As Ev
iOS 應用內跳轉到系統設置
photo pod style software lin vol ios5 per man 在iOS5下面版本號使用下面方法:【IOS5.1+之後不能使用此方法,iOS8的跳轉方法已找到見下方,iOS7的正在摸索。歡迎大家給出觀點意見】 通過URL Scheme的方
iOS應用內跳轉百度高德蘋果地圖
bool 知識點 coo count value oid bsp lse rec 移動開發經常用到基於位置的一些導航功能,但是對於對導航功能依賴性不強的的應用,我們直接采用應用外跳轉地圖APP即可。 但是應用間跳轉,首先需要設置白名單, 在iOS 9 下涉及到平臺客戶端跳
iOS開發-Cordova配置-Cordova互動-Cordova外掛開發iOS專案接入Cordova-Cordova跳轉外部網頁
本期內容: Cordova 詳細配置 Cordova 接入iOS專案 Cordova 訪問外部網頁 Cordova iOS互動外掛開發 Cordova簡介 Cordova是一個開源的移動開發框架,它允許你使用WEB開發技術(HTML5、CSS3、JavaS
Android開發之Activity的建立跳轉及傳值
在Android系統的江湖中有四大元件:活動(Activity), 服務(Service), 廣播接收器(Broadcast Reciver)和內容提供者(Content Provider)。今天所介紹的就是Android開發中的四大元件之一:Activity,其他那三大元件
Activity詳解 Intent顯式跳轉和隱式跳轉, 及多個Activity之間傳值 總結
//web瀏覽器 Uri uri= Uri.parse("http://www.baidu.com:8080/image/a.jpg"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(
iOS 10 應用內跳轉到系統設定
http://www.jianshu.com/p/5b7571d7bb34 設定跳轉有三種方式,每一種的使用場景都不同。 並且你在寫Demo測試跳轉到系統中自己應用下面設定的時候,你的應用要提前至少申請了某一個許可權,如(通知,定位等)。否則,會引起崩潰。 方式一:pr
IOS應用內跳轉到系統設定
iOS應用內跳轉到系統設定 設定跳轉有三種方式,每一種的使用場景都不同。 並且你跳轉到系統中自己應用下面設定的時候,你的應用要提前至少申請了某一個許可權,如(通訊錄,通知,定位等)。否則,會引起崩潰。