ios 一個app啟動另一個app

來源:互聯網
上載者:User

標籤:

問題描述:需要從一個ios應用程式中,能啟動另一個ios應用程式。

開發環境:xcode7.3.1

關鍵詞:白名單(LSApplicationQueriesSchemes)、註冊自己的URL

Demo原始碼連結:http://pan.baidu.com/s/1bo327sb

 

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

1.註冊自己的URL

    建立一個工程MyAppOne,在info.plist 檔案中添加欄位,註冊 MyAppOne的URL.

1.1在 Information Property List中,點擊“+” 添加 URL types,添加一個Item,再在Item中,添加“URL Schemes”,再在URL Schemes的Item中,添加一個字串“AppDemo1”(參考),該字串 即為 當前 工程 MyAppOne 自己 為自己註冊的 URL。註冊自己的URL完成。

1.2我們剛才註冊的自己的URL,就相當於我們當前的工程MyAppOne的一個身份標識。其他app通過ios提供的介面(後面會介紹是ios 的哪個函數),調用這個URL就能啟動我們這個MyAppOne應用程式了。

 

2. 白名單 LSApplicationQueriesSchemes

      在ios9以後,需要在info.plist檔案中添加 LSApplicationQueriesSchemes(白名單),才能合法啟動你想要啟動的那個app。白名單中添加的,是你想要啟動的app的 URL(這個URL就是上面講解的“註冊自己的URL”)。

2.1 添加 LSApplicationQueriesSchemes。(當前的工程是xcode7.3.1,xcode沒有自動匹配 LSApplicationQueriesSchemes,因此,需要你手動輸入這個欄位,並將它的屬性改為【Array】),在 LSApplicationQueriesSchemes 中添加“AppDemo2”。

我們假設已經有一個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     // 判斷是否可以啟動該 url12     if([[UIApplication sharedApplication] canOpenURL:urlLocal])13     {14         [[UIApplication sharedApplication] openURL:urlLocal];15         NSLog(@"launch AppDemo2 success!");16     }17     else18     {19         NSLog(@"No such url.");20         /// 跳到 appStore 某個 app21         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/

 

ios 一個app啟動另一個app

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.