如何从iOS应用程序中使用Branch.io DeepLink打开另一个iOS应用程序

如何从iOS应用程序中使用Branch.io DeepLink打开另一个iOS应用程序,ios,deep-linking,url-scheme,branch.io,ios-universal-links,Ios,Deep Linking,Url Scheme,Branch.io,Ios Universal Links,我们控制着两个iOS应用程序。让我们称它们为应用程序ABC和XYZ。使用Branch.io SDK,我们想知道如何: 以编程方式(Swift)在应用程序ABC内部创建延迟深度链接,目的是将用户带到应用程序XYZ。我们将为应用程序XYZ使用现有的URL方案,因为后端服务器现在根本不参与这项工作 我们希望Branch.io deep链接在点击UIButton时激活(因此这里不涉及WebView,只涉及本机按钮) 我们希望将一个20英寸长的ID(字母和数字)以及可能的登录信息(如果我们可以安全地完成

我们控制着两个iOS应用程序。让我们称它们为应用程序ABC和XYZ。使用Branch.io SDK,我们想知道如何:

  • 以编程方式(Swift)在应用程序ABC内部创建延迟深度链接,目的是将用户带到应用程序XYZ。我们将为应用程序XYZ使用现有的URL方案,因为后端服务器现在根本不参与这项工作
  • 我们希望Branch.io deep链接在点击UIButton时激活(因此这里不涉及WebView,只涉及本机按钮)
  • 我们希望将一个20英寸长的ID(字母和数字)以及可能的登录信息(如果我们可以安全地完成)传递给接收应用程序aka XYZ应用程序
我们已经按照步骤进行了操作,以确保基础工作正常进行。这包括“测试深度链接”部分。效果很好

我相信我已经阅读了与iOS和Branch.io提供的仪表板相关的每个API文档

在这次探索中,我最感兴趣的是:

  • 具体的
  • 扫描过的网页也一样
代码就在这里(更改了内容,以便不识别我们正在谈论的真实世界中的哪些应用程序,因为这并不重要):


非常感谢您提供的任何帮助。谢谢

Branch的Brian在这里

您可以在app ABC中生成链接以打开app XYZ,但这也意味着您将无法生成打开app ABC的链接。要实现此流程,您需要将Branch SDK集成到两个iOS应用程序中,但需要在您的Branch dashboard上为XYZ创建一个应用程序

以下是一些需要记住的事情:

  • 为应用程序XYZ()设置分支仪表板
  • 集成应用程序XYZ()的分支SDK
  • 集成应用ABC的Branch SDK,但使用应用XYZ的Branch dashboard上提供的Live密钥
这基本上会创建特定于应用程序XYZ的链接,如果URI方案和通用链接设置正确且与应用程序XYZ的分支仪表板一致,则应打开该应用程序。App ABC只需要分支键来生成链接,App ABC不需要修改权限文件或Info.plist


我希望这有帮助

Branch的Brian在这里

您可以在app ABC中生成链接以打开app XYZ,但这也意味着您将无法生成打开app ABC的链接。要实现此流程,您需要将Branch SDK集成到两个iOS应用程序中,但需要在您的Branch dashboard上为XYZ创建一个应用程序

以下是一些需要记住的事情:

  • 为应用程序XYZ()设置分支仪表板
  • 集成应用程序XYZ()的分支SDK
  • 集成应用ABC的Branch SDK,但使用应用XYZ的Branch dashboard上提供的Live密钥
这基本上会创建特定于应用程序XYZ的链接,如果URI方案和通用链接设置正确且与应用程序XYZ的分支仪表板一致,则应打开该应用程序。App ABC只需要分支键来生成链接,App ABC不需要修改权限文件或Info.plist


我希望这有帮助

我有ABC应用程序,配置了ABC分支

我有配置了XYZ分支的XYZ应用程序

我想为打开XYZ生成ABC链接的内部


(ABC现在也为自己生成链接)。

我有ABC应用程序,配置了ABC分支

我有配置了XYZ分支的XYZ应用程序

我想为打开XYZ生成ABC链接的内部


(ABC现在也为自己生成链接)。

针对您的用例的快速建议:如果您的应用程序ABC已经安装在设备上,您可以通过使用identifierForVendor+“您的数据库”跟踪关系链接->identifierForVendor来获得更一致的结果。另一种选择是使用共享密钥链将数据从一个应用程序传播到同一设备上的另一个应用程序。分支iO(或另一个延迟的深度链接提供商)可能会使用cookie或指纹(IP地址)将点击的链接与已安装的应用程序匹配。这两种方法都不太可靠。好的观点和建议,@OleksiyIvanov,谢谢!针对您的使用案例的快速建议:如果您的应用程序ABC已经安装在设备上,您可以通过使用identifierForVendor+“您的数据库”跟踪关系链接->identifierForVendor来获得更一致的结果。另一种选择是使用共享密钥链将数据从一个应用程序传播到同一设备上的另一个应用程序。分支iO(或另一个延迟的深度链接提供商)可能会使用cookie或指纹(IP地址)将点击的链接与已安装的应用程序匹配。这两种方法都不太可靠。好的观点和建议,@OleksiyIvanov,谢谢!是否无法按照我们的要求使用分支密钥?因此,当我想为特定案例打开XYZ时,我使用XYZ键,当我想为不同案例打开ABC时,我使用ABC键?按照我们的要求,是否无法使用分支键?所以,当我想为一个特定的案例打开XYZ时,我使用XYZ键,当我想为一个不同的案例打开ABC时,我使用ABC键?所以,我决定使用API。所以,我决定使用API。
    private class func createBranchIoLink(someIdentifier: String) {

        // Create content reference
        let buo = BranchUniversalObject(canonicalIdentifier: "content/\(someIdentifier)")
        buo.canonicalUrl = "xyz://content/\(someIdentifier)" // example is https://example.com/content/123
        buo.title = "Some Title"
        buo.contentDescription = "Add it to the other app"

        // Create link reference
        let lp: BranchLinkProperties = BranchLinkProperties()
        lp.channel = "ios"
        lp.feature = "some-feature"

        buo.getShortUrl(with: lp) { (url, error) in
            print(url ?? "")
            print(error ?? "")
            print("ok done")
            // when I take the url given to us here, the URL takes me back to THIS app instead of the app I want!
        }
    }