从另一个应用程序打开TestFlight应用程序,并深入链接到特定的应用

我如何find另一个应用程序的计划,并从我自己的iOS应用程序的深层链接?

更具体地说,我想在特定条件下(通过我的代码设置)深入链接到Testflight应用程序。 我假设这个人已经安装了Testflight(这可能是一个不好的假设,但我们可以接受这个假设)。

我知道,在Android上,您可以查询应用程序并发送意图深层链接到其他人的应用程序。 iOS上的等价物是什么?

有两件事你需要做的。 首先,检查是否安装了TestFlight。 然后创build一个新的链接到您的应用程序。

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或之后进行了链接,则必须声明要传递给此方法的URLscheme。 通过在Xcode项目的Info.plist文件中使用LSApplicationQueriesSchemes数组来执行此操作。 对于您希望应用程序使用此方法的每个URLscheme,请将其作为string添加到此数组中。

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

从查看plist的TestFlight的URLscheme是“itms-beta://”我无法设法得到它的深度链接,我试过把它传递给Apple ID,有没有? 并附带前缀appleid =我将尝试下一个包ID。

要在用户设备上打开TestFlight应用程序,您可以使用:

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

大多数内置的应用程序Apple提供了对自定义URLscheme的响应; 例如,地图,邮件,YouTube,iTunes和App Store应用程序将全部打开以响应自定义url。 但是,也有许多已发布的第三方应用程序,可以在您自己的应用程序中使用。 您可以search应用程序scheme

  1. http://handleopenurl.com/

  2. http://wiki.akosma.com/IPhone_URL_Schemes – 都有一个很好的URLscheme列表

一旦你得到了自定义的URLscheme,那么你可以使用相同的模式深入链接到该应用程序,

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

调用其中一个应用或另一个应用的另一种方式:

 - (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最近关于使用URLschemescanOpenURL博客文章,这涉及到新的安全问题和解决schemecanOpenURL

“这很有用,但包括Twitter和Facebook在内的开发人员正在使用这种机制来发现设备上安装的应用程序列表,这样他们就可以提供”量身定制的内容“,苹果公司认为这是违反隐私的行为,所以在iOS 9中限制了URL的查询如果你build立并链接到iOS 9 SDK,你需要将你的应用程序将要查询的模式列入白名单,重要的是这个策略也会影响那些尚未用iOS 9 SDK重build的旧版应用程序。

请阅读有关canOpenURL函数相关问题的链接

阅读@ picciano的最后一点 – 这不会修改您的应用程序的plist。