如何從我自己的iOS應用程序中找到另一個應用程序的計劃和深層鏈接?從另一個應用程序打開TestFlight應用程序並深入鏈接到特定應用程序
更具體地說,我想在特定條件下(通過我的代碼設置)深入鏈接到Testflight應用程序。我假設這個人已經安裝了Testflight(這可能是一個不好的假設,但我們可以接受這個假設)。
我知道,在Android上,您可以查詢應用程序併發送意圖深層鏈接到其他人的應用程序。 iOS上的等價物是什麼?
如何從我自己的iOS應用程序中找到另一個應用程序的計劃和深層鏈接?從另一個應用程序打開TestFlight應用程序並深入鏈接到特定應用程序
更具體地說,我想在特定條件下(通過我的代碼設置)深入鏈接到Testflight應用程序。我假設這個人已經安裝了Testflight(這可能是一個不好的假設,但我們可以接受這個假設)。
我知道,在Android上,您可以查詢應用程序併發送意圖深層鏈接到其他人的應用程序。 iOS上的等價物是什麼?
大多數內置應用程序Apple提供了對自定義URL方案的響應;例如,地圖,郵件,YouTube,iTunes和App Store應用程序都將打開以響應自定義網址。但是,也有許多已發佈的第三方應用程序可以在您自己的應用程序中使用。您可以搜索應用方案上
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]]];
}
這是很好的信息,但它不會嘗試回答關於TestFlight應用程序的自定義URL方案的問題。 – rmaddy 2014-10-31 05:22:00
從查看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];
}
有你需要做兩件事情。首先,檢查是否安裝了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>
另一種方式來調用任何一個應用程序或其他:
- (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最近在博客上使用URLschemes
與canOpenURL
這涉及到新的安全問題和解決方案。引用:
「這很有用,但包括Twitter和Facebook在內的開發人員正在使用此機制來發現設備上安裝的應用程序列表,以便他們可以交付」量身定製的內容「,蘋果公司認爲這是違反隱私的行爲,因此在iOS 9限制了對URL方案的查詢如果您構建並鏈接到iOS 9 SDK,則需要將您的應用程序將查詢的方案列入白名單。重要的是,此策略還會影響尚未重建的舊應用程序iOS 9 SDK「。
請有關canOpenURL
功能
閱讀@ picciano的最後一點問題閱讀this link - 這不會無需修改應用程序的工作的plist。
斯威夫特3/4答案:
if let customAppURL = URL(string: "itms-beta://"){
if(UIApplication.shared.canOpenURL(customAppURL)){
UIApplication.shared.open(customAppURL, options: [:], completionHandler: nil)
}
}
沒有一個。你是沙盒。 – matt 2014-10-31 04:17:40