ios - 具有二级子域的 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/*']
}]
}
}
解决方案
好的,找到了解决方案。它是 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/*"]
}]
}
}
推荐阅读
- recursion - F#如何从嵌套集创建树?
- css - CSS 使用 calc() 计算高度
- firebase - 由于 FirebaseInstanceId() 已弃用,如何重写以下代码?
- r - 尝试在 Linux 上安装 httpuv 包时出错
- c++ - 在 VSCode 中选择 C++ 编译器
- python - “from gremlin_python.process.graph_traversal import __”在 Python 中做了什么?
- java - 多个 thenReturn 如何在 Mockito 中工作?
- python - 如何获得可变 EMA 指标(熊猫、金融)?
- html - 如何在手机上更改字体大小?
- c - 运行测试时在我的 C 程序中出现分段错误