說明
正常情況下,一個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