iOS--應用間跳轉

一、A跳B的簡單跳轉

今天,我們就研究一下,在iOS中如何實現,應用間的跳轉。

基本實現思路:

為app2,定義一個URL Scheme,在app1中,通過打開這個URL Scheme,來打開app2。

具體實現的過程:

? ? 1.配置app2的URL Scheme

? ? ? ?(選擇->TARGETS->Info->URL Types)

注意:Scheme添加完畢后,com+R運行一次,系統就會記住這個Scheme所對用的應用程序。

? ?2.app1中的代碼實現

? 情況A:

iOS9可以直接進行,跳轉。

跳轉時:


iOS9會出現一個彈框,點擊打開,完成跳轉。

情況B:


(iOS9--Xcode7之前,的規范寫法。)

詳解:對于iOS9、Xcode7之前的這種規范寫法,以前很多廣告商利用這個推送。在這里引入了canOpenURL這個概念來判斷手機是否有安裝了對應的應用程序。如果,使用了canOpenURL,程序是無法直接進行跳轉的。會出現,這樣的bug。

app1中沒有發現app2的Scheme

要進行應用之間的跳轉,還需要引進iOS9白名單這個概念。iOS9白名單只針對于canOpenURL有效。為了限制廣告商的推送,白名單只能在當前應用程序中最多添加50個。要想進行跳轉,需要在當前程序中添加對方程序的Scheme。

實現過程:

1).在當前程序中的,infor.plist中添加白名單

添加白名單,將app2的Scheme進行添加

2)com+R運行,完成app1->app2之間的簡單跳轉。

推薦:為了追求簡便,建議選擇情況A,一句代碼就OK。


二、跳轉指定頁面(A跳轉B所指定的頁面)

? 一般在應用程序中,如果沒有此項功能的話,會推薦你進入另一個應用程序中進行此項功能的體驗。例如,一些推薦等(支付寶,沒有理財功能,推薦你到另外一個程序)。

基本實現思路:

? ? ?A跳轉B不同的界面

? ? ?1.A的URL中,添加其他信息

? ? ?2.B中需要接受傳遞的URL信息:appdelegate的openURL方法

? ? ?3.跳轉前先保證是根控制器(避免層級紊亂)

? ? ?4根據字符串關鍵字來跳轉到響應的界面

1.搭建界面

?兩個Demo工程的界面分別為:

app1


右上為朋友圈,右下為好友列表


2.通過Storyboard Segue進行標識符的綁定(朋友圈timeline,好友列表session)

3.代碼的具體實現

為app1添加對應的跳轉信息,并向app2發送添加的URL信息

app1中的代碼實現

主要是為了接受app1發來的URL信息

app2中的代碼實現

簡單介紹一下,三種獲取URL信息的方法

獲取接傳遞來的URL信息的三種方法

4.完成跳轉



三、應用間的回跳(B->A)


1.為app1設置自己的URL Scheme為new。并實現代碼如下:

new拼接規則由app2設置

2.在app2的AppDelegate中,增加一個傳來的URL屬性,并賦值。

AppDelegate中增加的URL屬性


完成屬性的賦值

3.app2中,進行接收時候的URL信息,進行分割,完成跳轉。代碼實現如下:

分割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程序進行遵守。

以上,是自己總結,如有欠缺,請指導。互相交流學習。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、應用場景 單點授權登錄,第三方分享,第三方登錄 二、跳轉方法 例如手機有兩個應用,app1和app2,app1...
    RogerHXJ閱讀 2,285評論 1 1
  • 場景需求:一個應用A(以news應用為示例)跳轉到另外一個應用B(以weChat為示例),常見需求如下1.應用推薦...
    船長_閱讀 6,937評論 8 58
  • 就我個人所知,iOS中存在3種方式可以打開(喚醒)其它手機App(除開系統級應用),分別是: 第三方登錄、分享、支...
    HelloiWorld閱讀 2,934評論 3 6
  • 1.應用通過配置URL schemes進行標識(可以配置多個URL schemes)。跳轉到其他應用就必須知道這個...
    curious_cat閱讀 257評論 0 1
  • 在床頭的抽屜里 有一張微微泛黃的信紙 它同別的信紙一樣 印著紅色的橫線 但它又不同于別的信紙 它帶著夏天的淡淡的梔...
    七齋閱讀 484評論 0 1