Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从另一个应用程序打开TestFlight应用程序并深入链接到特定应用程序_Ios_Objective C_Iphone_Deep Linking - Fatal编程技术网

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

Ios 从另一个应用程序打开TestFlight应用程序并深入链接到特定应用程序,ios,objective-c,iphone,deep-linking,Ios,Objective C,Iphone,Deep Linking,我如何从我自己的iOS应用程序中找到另一个应用程序的方案和深度链接 更具体地说,我想在某些条件下(由我的代码设置)深入链接到Testflight应用程序。我假设此人安装了Testflight(这可能是一个不好的假设,但我们可以接受这个假设) 我知道,在Android上,你可以查询应用程序,并将意图发送到其他人的应用程序的深度链接。iOS上的等效功能是什么?苹果提供的大多数内置应用程序都响应自定义URL方案;例如,地图、邮件、YouTube、iTunes和应用商店应用程序都将打开以响应自定义URL

我如何从我自己的iOS应用程序中找到另一个应用程序的方案和深度链接

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


我知道,在Android上,你可以查询应用程序,并将意图发送到其他人的应用程序的深度链接。iOS上的等效功能是什么?

苹果提供的大多数内置应用程序都响应自定义URL方案;例如,地图、邮件、YouTube、iTunes和应用商店应用程序都将打开以响应自定义URL。但是,也有许多已建立的第三方应用程序具有已发布的URL方案,您可以在自己的应用程序中使用这些方案。您可以在上搜索应用程序方案

  • –两者都有一个很好的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]]];
    }
    

    从plist来看,TestFlight的URL方案是“itms beta://”,我还无法获得它的深度链接,我已经尝试将苹果ID传递给它,有没有?在使用appleid=作为前缀的同时,我将在下一步尝试bundle 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方案, 将其作为字符串添加到此数组中

    LSApplicationQueriesSchemes
    itms测试版
    
    调用一个或另一个应用程序的另一种方法:

    - (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]];
    
    
    }
    
    请阅读“最近关于使用
    URLschemes
    canOpenURL
    的博客文章。这与新的安全问题和解决方案有关。引用:

    这是很有用的,但包括Twitter和Facebook在内的开发人员使用这种机制来发现安装在设备上的应用程序列表,以便他们能够提供“定制内容”。苹果认为这是侵犯隐私的行为,因此在iOS 9中限制了对URL方案的查询。如果您构建并链接iOS 9 SDK,则需要将应用程序将查询的方案列入白名单。需要了解的是,此策略还可能影响尚未使用iOS 9 SDK重建的旧应用。”

    请阅读与
    canOpenURL
    功能相关的问题

    阅读@picciano的最后一点-如果不修改应用程序的plist,这将不起作用。

    Swift 3/4回答:

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

    没有。您是沙盒。React native是否有任何解决方案可以实现相同的功能?
    Linking.canOpenURL(config.testFlightUrl)。然后(supported=>{if(!supported){console.log(“无法打开Url”);}否则{return Linking.openURL(config.testFlightUrl);})。catch(err=>console.error(“无法打开Url”,err))这是一个很好的信息,但是它没有试图回答关于TestFlight应用程序的自定义URL方案的问题。这两个链接都返回404如何获取customAppURL?我的应用程序已上载到TestFlight,但我找不到获取URL的方法。它只是
    https://beta.itunes.apple.com/v1/app/
    后跟应用程序id号te注意到这没有任何文档记录,可能会随时更改。这将打开Testflight并显示我们的beta应用程序图标(带有打开的链接),但是,如何从链接直接打开测试版应用程序?这似乎在iOS 10.3上不起作用?它在TestFlight页面上正确地打开了Safari,但它没有打开TestFlight应用程序…@Altimac它现在看起来像是直接的深度链接。使用协议直接调用应用程序:
    itms-beta://beta.itunes.apple.com/v1/app/978489855
    if let customAppURL = URL(string: "itms-beta://"){
        if(UIApplication.shared.canOpenURL(customAppURL)){
            UIApplication.shared.open(customAppURL, options: [:], completionHandler: nil)
        }
    }