首页 > 解决方案 > 具有二级子域的 iOS 通用链接不会深度链接到本机应用程序,但可以在一级子域(同一主机)上进行深度链接

问题描述

我的应用中有包含多个应用链接的功能:条目如下:

applinks:firstlevel.domain.com
applinks:second.level.domain.com

第一级子域上的通用链接可以正常工作并打开应用程序。二级子域上的通用链接不会打开应用程序(转到 safari)。我现在的怀疑是因为复合(2 件)子域。

apple-app-site-association 文件在两者上完全相同,并且可以从两者托管和下载。这两个 URL 都可以从我们的内部网络中访问,并且位于相同的域和 TLD 上。SSL 配置正确。没有发生重定向(通过 chrome 开发工具验证)

每个相应的 apple-app-site-association文件都托管在适当的子域(而不是 domain.com 的根目录)下。但同一个顶级域用于 URL 1 和 2 中的两个子域

二级子域可能是问题,还是其他网络配置差异更可能是问题?我在网上找不到说明通用链接是否支持多个子域的信息。

更新:尝试删除 applinks:firstlevel.domain.com 条目,以确保两个子域不会因相同的捆绑 ID(和站点关联)而发生冲突。这并没有什么不同。二级子域仍然没有深度链接。

关于如何诊断为什么第二个 URL 不能作为应用程序中的深层链接打开的任何建议?

也不适合使用通配符或将 apple-app-site-association 文件上传到域的根目录,因为那是生产环境,不应有任何较低的环境设置。

这是我们的 apple-app-site-association 文件:

{
    'webcredentials': {
        'apps': ['ourteamid.ca.ourdomain.ourname']
    },
    'applinks': {
        'apps': [],
        'details': [{
            'appID': 'ourteamid.com.ourdomain.ourname1.ourname2',
            'paths': ['r/samplepath/*', 'en/r/samplepath/*', 
'fr/r/samplepath/*']
        }]
    }
}

标签: iosios-universal-links

解决方案


好的,找到了解决方案。它是 apple-app-site-association 文件中的单引号(单引号不是有效的 JSON)。Apple 的示例都使用双引号。

在某个时候,有人将其转换为单引号,并上传了文件,但我们没有抓住它。深度链接在文件中使用双引号时可以正常工作,并且与二级域无关。

更新的关联文件:

    {
    "webcredentials": {
        "apps": ["ourteamid.ca.ourdomain.ourname"]
    },
    "applinks": {
        "apps": [],
        "details": [{
            "appID": "ourteamid.com.ourdomain.ourname1.ourname2",
            "paths": ["r/samplepath/*", "en/r/samplepath/*", "fr/r/samplepath/*"]
        }]
    }
}

推荐阅读