跨不同团队开发的不同应用程序支持同一域

Supporting same domain across different apps developed by different teams

我看过 但它没有解决我们当前的问题。我们正在寻求与一家特定公司的合作伙伴关系,问题是我们的苹果网站关联文件是否可以保存彼此的团队和应用程序 ID,但仍然响应同一个域?即我们的服务器将容纳:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "1234ABCDE.com.ourdomain.ourApp",
                "paths": ["*"]
            },
            {
                "appID": "D3KQX62K1A.com.theirdomain.theirApp",
                "paths": ["*"]
            }

        ]
    }
}

这意味着我们的应用可以在我们应用的关联域中有 applinks:ourdomain.com。他们的服务器将容纳:

{
        "applinks": {
            "apps": [],
            "details": [
                {
                    "appID": "1234ABCDE.com.ourdomain.ourApp",
                    "paths": ["*"]
                },
            {
                "appID": "D3KQX62K1A.com.theirdomain.theirApp",
                "paths": ["*"]
            }

            ]
        }
    }

然后在他们的关联域中,他们也可以拥有:applinks:ourdomain.com。因此,如果用户按下 ourdomain.com url 并安装了他们的应用程序,它会打开他们的应用程序吗?我想看看当按下我们的一个 URL 并且用户安装了他们的应用程序时,我们是否可以打开他们的应用程序。如果用户同时安装了我们的两个应用程序,在这种情况下会发生什么情况?

一般答案

这肯定会奏效 — 这正是通用链接旨在发挥作用的方式。您正在完成两个必需的部分:

  1. 正在使用 apple-app-site-association 文件验证域的 'control'。
  2. 请求使用应用内的 applinks: 权利验证域。

正式拥有域并不重要,只要两者都存在即可。

就同时安装两个应用程序时发生的情况而言,Apple(当然)是正确的:这是 未定义的。 这意味着 Apple 明确选择不支持这种情况,所以不能保证会发生什么。为避免这种情况,您不应该对这两个应用程序都使用 "paths": ["*"];相反,做一些类似 "paths": ["/ourApp/*"]"paths": ["/theirApp/*"] 的事情来区分基于路径的链接。

分行特定信息

既然你提到了 Branch.io(完全披露:我在 Branch 团队),我还将介绍这在我们的服务中通常是如何工作的。

我们为每个应用程序自动配置和托管 apple-app-site-association 文件,因此您无需担心技术细节。当我们有两个应用程序有兴趣以这种方式相互合作时,过程很简单:

  1. 想要打开他们的应用程序。
  2. 获得了他们应用的分支密钥。
  3. 使用他们应用的 分支键生成链接,通常由appending query parameters
  4. 这些链接将自动打开他们的应用程序,就好像他们已经生成了链接一样。