iOS開發——應用間跳轉


iOS開發過程中,我們經常碰到應用間跳轉的情景:

 1、使用第三方用戶登錄,跳轉到需授權的App或跳轉到分享app的對應頁面

       *需要用戶授權,還需要"返回到調用的程序,同時返回授權的用戶名、密碼"

    2、應用程序推廣,跳轉到另一個應用程序(本機已經安裝);

    3、跳轉到iTunes並顯示應用程序下載頁面(本機沒有安裝);

    4、第三方支付,跳轉到第三方支付App,如支付寶支付,微信支付;

    5、使用系統內置程序,如跳轉到打電話、發短信、發郵件、Safari

 

應用間跳轉原理:若應用A跳轉到應用B,則給AB自身自定義URL Schemes(自定義的協議頭)后,通過在A中處理BURL Schemes,就可以在A中啟動B了。

注:iOS9之后,應用間跳轉需要在Info.plsit中設置白名單。以 ‘LSApplicationQueriesSchemes’Key值,對應數組value中添加白名單應用的URL Schemes即可。若未設置白名單,會報錯,值得我們注意:

-canOpenURL: failed for URL: "應用B的URL Schemes://" - error: "This app is not allowed to query for scheme 應用B"

 

以下例子均以系統高於iOS9為例。

例一:應用A跳轉到應用B

AppA自定義URL Schemes,且在應用A的Info.plist中設置白名單,添加應用B的URL Schemes

跳轉代碼:

 

例二:應用A跳轉到應用B指定界面

A中跳轉響應事件:

 

應用B捕捉到被其他應用打開:

系統版本小於iOS9

系統版本大於iOS9

 

例三:應用B反跳轉回應用A

1、 步驟分析:從B再跳轉回A,那么在A跳轉到B的時候,還應將應用AURL Schemes傳遞過來。這樣我們才能指定返回哪個應用程序(iOS9之后,該應用一定要添加到白名單內)

    指定一個傳遞URL的規則:協議頭://應用BURL Schemes?應用AURL Schemes。即:AppB://One?AppA

    說明:

    AppB是跳轉過來的應用App-BURL Schemes

    One是用來區別跳轉頁面的標識;

    ? 是分割符;

    AppA是跳轉回的應用App-AURL Schemes

2、我們根據傳遞來的數據,進行反跳回去。跳轉頁面設置一個屬性保存傳遞的字符串

@property (nonatomic, copy) NSString *urlString;

 

AppA中的修改:

 

AppB中的修改:

1.修改AppDelegate代理方法:

2.分別修改OneVc和TwoVc控制器

參考:iOS應用間跳轉

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM