應用間通信

實現的效果:有兩款應用A與B,A打開Bphp

A --> Bapp

1. 新建工程B,bundle ID爲com.YouXianMing.Bide

創建一個URLurl

這麼填寫(與前面bundle ID相似的寫法):spa

2. 新建工程A,bundle ID隨便起,爲簡單起見,寫下以下代碼code

複製代碼

    NSURL *url = [NSURL URLWithString:@"B://com.YouXianMing"];    if ([[UIApplication sharedApplication] canOpenURL:url])
    {
        NSLog(@"跳轉並打開");
        [[UIApplication sharedApplication] openURL:url];
    }    else
    {
        NSLog(@"打開失敗");
    }

複製代碼

先執行B(安裝應用B),在執行應用A,你會發現能夠正常從A應用跳轉到B應用了.component

很簡單吧!orm

 

咱們再來實現能夠傳遞參數的字符串

實現的效果:有兩款應用A與B,A打開B,並傳遞一些參數get

    參數

A -----> B

1. A中代碼這麼寫

複製代碼

    // 其餘應用的 URL Schemes --> B    // 其餘應用的 Identifier  --> com.YouXianMing    // values?              --> 要傳遞的參數,方便解析
    NSURL *url = [NSURL URLWithString:\                  @"B://com.YouXianMing/values?username=WT&password=123456&callback=invoking"];    if ([[UIApplication sharedApplication] canOpenURL:url])
    {
        NSLog(@"跳轉並打開");
        [[UIApplication sharedApplication] openURL:url];
    }    else
    {
        NSLog(@"打開失敗");
    }

複製代碼

2. 在B應用中請添加以下方法到AppDelegate.m中

複製代碼

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{    if ([[url scheme] isEqualToString:@"B"])
    {        if ([[url host] isEqualToString:@"com.YouXianMing"])
        {            /*
             query用法
             
             The query string from the URL. 
             If the receiver does not conform to RFC 1808, returns nil. For example, 
             in the URL http://www.example.com/index.php?key1=value1&key2=value2, 
             the query string is key1=value1&key2=value2.             */
            NSString *query = [url query];            // 分割&
            NSArray *array = [query componentsSeparatedByString:@"&"];        
            // 顯示數據
            NSLog(@"%@", array);
        }        
        return YES;
    }    
    return NO;
}

複製代碼

3. 執行A程序後,注意觀察B程序的打印信息:

2014-04-21 13:06:00.277 B[1683:60b] (
    "username=WT",
    "password=123456",
    "callback=invoking"
)

 

實現的效果:有兩款應用A與B,A打開B並傳參數,B打開A並傳參數

太簡單了,略.

 

小結:

1. 若是A應用想被B應用打開,須要在A應用中設置URL,在設置中須要設置URL identifier 以及 URL Schemes,做爲這個應用的標示

2. A既要打開B,B也可以打開A,那就須要AB兩款應用都設置URL了

3. 能夠傳遞字符串的參數

相關文章
相關標籤/搜索