说明
正常情况下,一个App 对应一个Universal Link。也可以通过path 不一样来区分,比如https://host/path1
。
活久见的事情还是会发生的,公司要求APP Store,global市场的app,china市场的app要公用同一条Universal Link。
实际上也是合情合理的,毕竟比较少人装同一套代码的两个App。
问题
在支持通用链接的两个不同应用程序上支持同一域。
我有一个支持通用链接的应用程序,当前在应用程序商店中。
假设它支持www.example.com
域,因此可以轻松打开通用链接。我们将在相关域中提供applinks:www.example.com
。
现在说说我是否要发布另一个应用程序,它也支持相同的域。现在,iOS将如何通过通用链接来区分打开哪个应用程序。
解决
为了Universal Links
在两个不同的应用程序上支持单个域,您需要在现有apple-app-site-association
文件中进行更改,网址为https:// {domain} / apple-app-site-association
。
对于单应用程序支持
对于单个应用程序支持,它看起来像这样
{
"applinks": {
"apps": [],
"details": [
{
"appID": "1234ABCDE.com.domain.myapp",
"paths": ["*"]
}
]
}
}
对于多应用程序支持
对于多个应用程序的支持,你需要添加一个键值对details数组applinks中apple-app-site-association
。看起来像这样
{
"applinks": {
"apps": [],
"details": [
{
"appID": "1234ABCDE.com.domain.myApp",
"paths": ["*"]
},
{
"appID": "1234ABCDE.com.domain.mySecondApp",
"paths": ["*"]
},
{
"appID": "1234ABCDE.com.domain.myThirdApp",
"paths": ["*"]
}
]
}
}
apple-app-site-association
文件的一般格式
该文件如下所示:
{
"applinks": {
"apps": [ ],
"details": [
{
"appID": "{app_prefix}.{app_identifier}",
"paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
},
{
"appID": "TeamID.BundleID2",
"paths": [ "*" ]
}
]
}
}
配置Universal link 请参考教程
拉起客户端 Universal Links & Scheme Open App iOS(Deep Link)
参考
https://stackoverflow.com/questions/35271022/supporting-same-domain-on-two-different-apps-supporting-universal-links
https://stackoverflow.com/questions/35609667/how-to-support-universal-links-in-ios-app-and-setup-server-for-it