2014-10-31 239 views
9

如何從我自己的iOS應用程序中找到另一個應用程序的計劃和深層鏈接?從另一個應用程序打開TestFlight應用程序並深入鏈接到特定應用程序

更具體地說,我想在特定條件下(通過我的代碼設置)深入鏈接到Testflight應用程序。我假設這個人已經安裝了Testflight(這可能是一個不好的假設,但我們可以接受這個假設)。

我知道,在Android上,您可以查詢應用程序併發送意圖深層鏈接到其他人的應用程序。 iOS上的等價物是什麼?

+0

沒有一個。你是沙盒。 – matt 2014-10-31 04:17:40

回答

4

大多數內置應用程序Apple提供了對自定義URL方案的響應;例如,地圖,郵件,YouTube,iTunes和App Store應用程序都將打開以響應自定義網址。但是,也有許多已發佈的第三方應用程序可以在您自己的應用程序中使用。您可以搜索應用方案上

  1. http://handleopenurl.com/

  2. http://wiki.akosma.com/IPhone_URL_Schemes - 都具有URL方案的一個很大的名單

一旦你拿到了自定義URL方案,那麼你就可以深層鏈接該應用使用相同的架構,

NSURL *customAppURL = [NSURL URLWithString:@"urlscheme://"]; 
//Eg: NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%20World!"]; 
if ([[UIApplication sharedApplication] canOpenURL:whatsAppURL]) { 
    [[UIApplication sharedApplication] openURL:whatsAppURL]]]; 
} 
+9

這是很好的信息,但它不會嘗試回答關於TestFlight應用程序的自定義URL方案的問題。 – rmaddy 2014-10-31 05:22:00

5

從查看plist的TestFlight的URL方案是「itms-beta://」我無法設法讓它進行深度鏈接,但我試過將它傳遞給Apple ID,有沒有?以及用appleid =加前綴,然後我會嘗試下一個包ID。

要打開用戶設備上的應用程序TestFlight你可以使用:

NSURL *customAppURL = [NSURL URLWithString:@"itms-beta://"]; 
if ([[UIApplication sharedApplication] canOpenURL:customAppURL]) { 
    [[UIApplication sharedApplication] openURL:customAppURL]; 
} 
19

有你需要做兩件事情。首先,檢查是否安裝了TestFlight。然後創建一個新的鏈接到您的應用程序。

NSURL *customAppURL = [NSURL URLWithString:@"itms-beta://"]; 
if ([[UIApplication sharedApplication] canOpenURL:customAppURL]) { 

    // TestFlight is installed 

    // Special link that includes the app's Apple ID 
    customAppURL = [NSURL URLWithString:@"https://beta.itunes.apple.com/v1/app/978489855"]; 
    [[UIApplication sharedApplication] openURL:customAppURL]; 
} 

這個特殊的https://beta.itunes.apple.com URL將直接在TestFlight中打開。

最後,如果您使用的是iOS 9(或更高版本),則需要在Info.plist中添加一個以使canOpenURL:方法起作用。

如果您的應用在iOS 9.0或之後進行鏈接,則必須聲明您想要傳遞給此方法的URL 。通過在Xcode項目的Info.plist 文件中使用 LSApplicationQueriesSchemes數組來執行此操作。對於您希望應用程序使用此方法的每個URL方案, 將其作爲字符串添加到此數組中。

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>itms-beta</string> 
</array> 
+1

我如何獲得customAppURL?我的應用程序已上傳到testFlight,但我找不到獲取網址的方法。 – Paragon 2015-10-21 16:16:06

+3

它只是'https:// beta.itunes.apple.com/v1/app /'後跟應用程序ID。請注意,這沒有記錄在任何地方,並可能隨時更改。 – picciano 2015-10-21 16:52:24

+0

這會打開Testflight並顯示我們的測試版應用圖標(帶有開放式鏈接),但是如何直接從鏈接打開測試版應用? – 2015-10-29 15:52:07

0

另一種方式來調用任何一個應用程序或其他:

- (IBAction)go:(id)sender { 
    NSString *cnnAppURL = @"cnn://"; 
    NSString *mapsAppURL = @"maps://"; 

    BOOL canOpenURL = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:cnnAppURL]]; 

    NSString *url = canOpenURL ? cnnAppURL : mapsAppURL; 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]]; 


} 

請閱讀「UseYourLoaf's最近在博客上使用URLschemescanOpenURL這涉及到新的安全問題和解決方案。引用:

「這很有用,但包括Twitter和Facebook在內的開發人員正在使用此機制來發現設備上安裝的應用程序列表,以便他們可以交付」量身定製的內容「,蘋果公司認爲這是違反隱私的行爲,因此在iOS 9限制了對URL方案的查詢如果您構建並鏈接到iOS 9 SDK,則需要將您的應用程序將查詢的方案列入白名單。重要的是,此策略還會影響尚未重建的舊應用程序iOS 9 SDK「。

請有關canOpenURL功能

閱讀@ picciano的最後一點問題閱讀this link - 這不會無需修改應用程序的工作的plist。

0

斯威夫特3/4答案:

if let customAppURL = URL(string: "itms-beta://"){ 
    if(UIApplication.shared.canOpenURL(customAppURL)){ 
     UIApplication.shared.open(customAppURL, options: [:], completionHandler: nil) 
    } 
} 
相關問題