iOS應用程序的跳轉和URL Scheme的使用

第一:什麼是URL Scheme

   與Android的URL Scheme相似,是爲方便app之間互相調用而設計的。你能夠經過一個相似URL的連接,經過系統的OpenURl來打開該app,並能夠傳遞一些參數。每一個URL必須能惟一標識一個APP,若是你設置的URL與別的APP的URL衝突,此時,你的APP不必定會被調用起來,緣由是當APP在安裝的時候就已經在系統裏面註冊了此APP的URL Scheme,若是你的一致可是是後安裝的,那麼系統不會調用你的APP,由於你的APP設置的URL scheme被覆蓋了。微信

固然系統的APP的URL Scheme是優先級高的,不用想着能覆蓋系統APP的URL Scheme的註冊調用。app

 

第二:URL Scheme有什麼做用:

你們知道在IOS系統裏面APP之間是相互隔離的,不像Android,每一個組件均可以做爲一個獨立的功能被其餘APP調用,可是,IOS系統裏面也須要完成相似於三方功能如支付、搜索跳轉、導航等等跨APP的功能,怎麼實現呢,蘋果就使用了URL Scheme來實現了這個功能。經過各個APP設計的符合蘋果的統一規範的URL Scheme,系統就會自動去調用相關的APP來完成你的請求。ide

好比:咱們的APP須要使用支付寶的三方支付功能、個人APP須要使用微信分享好的文章,那麼此時就能夠經過URL Scheme來傳遞這些數據到支付寶APP或者微信APP,系統會經過這些APP的URL Scheme來調起這些APP,完成你所須要作的跨APP的功能。url

 

第三:怎麼使用呢?

假若有2個應用程序A和B,在B程序的 Info.plist 添加一個 URL types 節點,如圖:spa

 

以後在A程序調用設計

 

/**對象

 *  打開B程序界面支付寶

 */it

- (IBAction)openSinaio

{

    // 每一個程序均可以擁有一個本身惟一的URL

    // URL組成: 協議頭://主機/路徑

    // http://

    // file://

    // ftp://

    // ...

    // 1.獲取application對象

    UIApplication *app = [UIApplication sharedApplication];

    // 2.建立須要打開的應用程序的URL

    // 在應用程序跳轉中, 只要有協議頭便可, 路徑無關緊要

    NSURL *url = [NSURL URLWithString:@"sina://login?myScheme=wangyi"];

    // 3.利用application打開URL

    if ([app canOpenURL:url]) {

        // 3.1判斷是否能夠打開

        [app openURL:url];

    }else

    {

        // 3.2打開App STORE下載

        NSLog(@"根據App id打開App STORE");

    }

    

}

 就能成功跳轉到指定url的應用程序了.

以後還會調用A程序的appdeleage方法

 

/**

 *  當被其餘應用程序經過URL打開時就會調用

 *  @param application 當前的應用程序

 *  @param url         打開當前程序的URL

 *   @return 是否成功處理

 */

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;

 

/**

 *  當被其餘應用程序經過URL打開時就會調用(新方法)

 *

 *  @param application       當前的應用程序

 *  @param url               打開當前程序的URL

 *  @param sourceApplication 打開當前程序的Bundle identifier

 *  @param annotation

 *  @return 是否成功處理

 */

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

相關文章
相關標籤/搜索