一、A跳B的簡單跳轉
今天,我們就研究一下,在iOS中如何實現,應用間的跳轉。
基本實現思路:
為app2,定義一個URL Scheme,在app1中,通過打開這個URL Scheme,來打開app2。
具體實現的過程:
? ? 1.配置app2的URL Scheme
? ? ? ?(選擇->TARGETS->Info->URL Types)
? ?2.app1中的代碼實現
? 情況A:
跳轉時:
情況B:
詳解:對于iOS9、Xcode7之前的這種規范寫法,以前很多廣告商利用這個推送。在這里引入了canOpenURL這個概念來判斷手機是否有安裝了對應的應用程序。如果,使用了canOpenURL,程序是無法直接進行跳轉的。會出現,這樣的bug。
要進行應用之間的跳轉,還需要引進iOS9白名單這個概念。iOS9白名單只針對于canOpenURL有效。為了限制廣告商的推送,白名單只能在當前應用程序中最多添加50個。要想進行跳轉,需要在當前程序中添加對方程序的Scheme。
實現過程:
1).在當前程序中的,infor.plist中添加白名單
2)com+R運行,完成app1->app2之間的簡單跳轉。
推薦:為了追求簡便,建議選擇情況A,一句代碼就OK。
二、跳轉指定頁面(A跳轉B所指定的頁面)
? 一般在應用程序中,如果沒有此項功能的話,會推薦你進入另一個應用程序中進行此項功能的體驗。例如,一些推薦等(支付寶,沒有理財功能,推薦你到另外一個程序)。
基本實現思路:
? ? ?A跳轉B不同的界面
? ? ?1.A的URL中,添加其他信息
? ? ?2.B中需要接受傳遞的URL信息:appdelegate的openURL方法
? ? ?3.跳轉前先保證是根控制器(避免層級紊亂)
? ? ?4根據字符串關鍵字來跳轉到響應的界面
1.搭建界面
?兩個Demo工程的界面分別為:
2.通過Storyboard Segue進行標識符的綁定(朋友圈timeline,好友列表session)
3.代碼的具體實現
為app1添加對應的跳轉信息,并向app2發送添加的URL信息
主要是為了接受app1發來的URL信息
簡單介紹一下,三種獲取URL信息的方法
4.完成跳轉
三、應用間的回跳(B->A)
1.為app1設置自己的URL Scheme為new。并實現代碼如下:
2.在app2的AppDelegate中,增加一個傳來的URL屬性,并賦值。
3.app2中,進行接收時候的URL信息,進行分割,完成跳轉。代碼實現如下:
詳解:一般,進行應用間回跳,如B->A,B程序中是不會寫白名單的,原因:1.白名單數量有限,最多添加50個。2.A程序還需要提前把自己的Scheme告訴B程序。所以,A程序就必須按照B程序所指定的Scheme規則,進行URL Scheme的拼接。A程序進行Scheme的拼接就必須保證A應用中的Scheme是唯一的,是為了避免同名,造成跳轉錯誤以及保證信息回跳中用戶數據的安全。所以,在app1中設置了例如『new』的Scheme.再在B程序中的AppDelegate,設置一個A程序傳來的URL信息,并進行賦值。B程序在獲取URL信息之后,按照自己的規則進行截取保留,傳遞給需要跳轉的控制器。例如,B程序中的,朋友圈所對應的控制器,完成B->A的回跳。
基本知識點梳理:
1.URL Scheme可以理解為應用程序的別名。
2.URL Scheme的添加相當于添加了一個協議頭->app2://,相當于應用之間跳轉的協議。
3.iOS9之后出現的授權彈框,只會在首次跳轉的應用程序中出現一次。
4.一般應用間進行回跳,規則是由需要B程序進行規則,A程序進行遵守。
以上,是自己總結,如有欠缺,請指導。互相交流學習。