ios 一個app啓動另外一個app

問題描述:須要從一個ios應用程序中,能啓動另外一個ios應用程序。ios

開發環境:xcode7.3.1xcode

關鍵詞:白名單(LSApplicationQueriesSchemes)、註冊本身的URLapp

Demo源代碼連接:http://pan.baidu.com/s/1bo327sb函數

 

    如何從一個app中,啓動另外一個app???本人ios菜鳥(工做須要,剛開始自學ios,現學現賣,哈哈)參考網上若干文章,實現了這個功能。目前,將demo分享出來。學習

1.註冊本身的URL

    新建一個工程MyAppOne,在info.plist 文件中添加字段,註冊 MyAppOne的URL.url

1.1在 Information Property List中,點擊「+」 添加 URL types,添加一個Item,再在Item中,添加「URL Schemes」,再在URL Schemes的Item中,添加一個字符串「AppDemo1」(參考下圖),該字符串 即爲 當前 工程 MyAppOne 本身 爲本身註冊的 URL。註冊本身的URL完成。spa

1.2咱們剛纔註冊的本身的URL,就至關於咱們當前的工程MyAppOne的一個身份標識。其餘app經過ios提供的接口(後面會介紹是ios 的哪一個函數),調用這個URL就能啓動咱們這個MyAppOne應用程序了。code

 

2. 白名單 LSApplicationQueriesSchemes

      在ios9之後,須要在info.plist文件中添加 LSApplicationQueriesSchemes(白名單),才能合法啓動你想要啓動的那個app。白名單中添加的,是你想要啓動的app的 URL(這個URL就是上面講解的「註冊本身的URL」)。orm

2.1 添加 LSApplicationQueriesSchemes。(當前的工程是xcode7.3.1,xcode沒有自動匹配 LSApplicationQueriesSchemes,所以,須要你手動輸入這個字段,並將它的屬性改成【Array】),在 LSApplicationQueriesSchemes 中添加「AppDemo2」。blog

咱們假設已經有一個MyAppTwo,它註冊的URL是 AppDemo2。咱們想在MyAppOne工程去啓動的MyAppTwo這個app,就須要在白名單中添加MyAppTwo的URL。

 

3.MyAppOne 啓動 另外一個App的關鍵代碼

3.1 字符串AppDemo2後面的 "://"是必須添加的,不然會 沒法打開你指定的app的URL的。

3.2 代碼介紹了 無參URL和有參URL。若是想傳遞參數,在「://」後面附加這些參數便可。

 1 //// 用戶 按下 按鈕********* 請參考 ViewController.m 文件中的代碼
 2 - (IBAction)Btn1Click:(id)sender {
 3     NSLog(@"MyAppOne: You click the button1111.");
 4     char szbuff[50] = {0};
 5     sprintf(szbuff, "%s", "AppDemo2://userName=heliang&pwd=20160812");
 6     /// 1.不帶參數的傳遞方式
 7     //    NSURL* urlLocal = [NSURL URLWithString:@"AppDemo2://"];
 8     /// 2.帶參數的傳遞方式
 9     NSURL* urlLocal = [NSURL URLWithString:[NSString stringWithUTF8String:szbuff]];
10     
11     // 判斷是否能夠啓動該 url
12     if([[UIApplication sharedApplication] canOpenURL:urlLocal])
13     {
14         [[UIApplication sharedApplication] openURL:urlLocal];
15         NSLog(@"launch AppDemo2 success!");
16     }
17     else
18     {
19         NSLog(@"No such url.");
20         /// 跳到 appStore 某個 app
21         NSURL* urlAppStore = [NSURL URLWithString:@"https://itunes.apple.com/cn/app/tie-lu12306/id564818797?mt=8"];
22         [[UIApplication sharedApplication] openURL: urlAppStore];
23     }
24 }

3.3至此,已經介紹完如何從一個app1啓動另外一個app2了。

步驟以下

app2在info.plist的URL Schemes中 註冊本身的URL

②app1在info.plist的【白名單】中添加 app2註冊的 URL

③app1中調用 [UIApplication sharedApplication] openURL:urlLocal]; 方法,啓動 app2。(能夠參考連接中的demo,進行進一步的理解。)

 

如何獲取傳遞這種啓動方式,傳遞過來的參數呢?

 4.獲取傳遞過來的參數

4.1在AppDelegate.m 中重寫 下面的這個application方法(若是文件中沒有這個函數,就手動添加下面的函數,這就是重寫)。傳遞過來的參數,就在 url中。(能夠參考連接中的demo,進行進一步的理解。)

4.2盡信書不如無書,本文也不是權威的講解。本文例子,僅供你們入門學習ios的這個知識點。更深層次的原理和應用,還須要你們慢慢琢磨了。當前,能在本身的工程中,實現這個功能,你就成功了。提早祝賀你成功!

 1 ///////// 重寫的 application 方法******** 請參考 AppDelegate.m 文件中的代碼
 2 -(bool)application:(UIApplication*)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options
 3 {
 4     //// 打印 咱們收到的參數、以及應用程序的 applicationkey
 5     NSLog(@"AppDemo1被啓動,下面是 AppDemo2傳遞過來的 啓動參數:");
 6     NSString* strUrl = [[NSString alloc] init];
 7     strUrl = url.absoluteString;
 8     NSLog(@"strURL:%@", strUrl);
 9     
10     NSString* sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
11     NSLog(@"sourceApplication:%@", sourceApplication);
12     return YES;
13 }

 

參考連接:

http://www.jianshu.com/p/e14df92cb207

http://lysongzi.com/2016/03/13/iOS-%E4%BD%BF%E7%94%A8URL-Scheme%E5%AE%9E%E7%8E%B0app%E4%B9%8B%E9%97%B4%E7%9A%84%E9%80%9A%E4%BF%A1/

相關文章
相關標籤/搜索