本文主要是講解一下開啟Associated Domains
并實現(xiàn)通用鏈接universal link
的配置聂喇,以及對另外一篇文章 《QQ分享提示設(shè)備未授權(quán)(錯誤碼:25105)》關(guān)于QQ鞍陨、微信對應的universal link 的補充寓辱。
Associated Domains
主要作用就是由外部瀏覽器打開已安裝的APP涛癌,實現(xiàn)引流等作用陶因。 iOS 9.0 之前的實現(xiàn)深度鏈接是通過 URL Types
白名單來實現(xiàn)劳景,白名單的方式存在弊端例如:與其它APP白名單重復了视搏,導致無法正常跳轉(zhuǎn)至所需的APP。
Associated Domains 午阵、QQ 躺孝、微信
校驗 universal link
的方式是共通—— 通過訪問服務器域名的根目錄或者.well-known子目錄下配置 apple-app-site-association
的文件來實現(xiàn)的。 這點很重要底桂,后續(xù)如果出現(xiàn)問題植袍,基本就是檢查一下是否開啟配置,訪問一下對應域名下的apple-app-site-association
文件籽懦,基本就可確定問題所在于个。
下面先講解一下關(guān)于 Associated Domains 配置(這部分基本就是百度一堆,這邊算是一個小小的記錄吧)猫十。
Associated Domains 配置
配置Associated Domains
需要進行以下步驟來實現(xiàn):
- 蘋果開發(fā)者后臺開啟
Associated Domains
配置 - Xcode 工程開啟
Associated Domains
配置 - 服務器端配置
apple-app-site-association
文件
1览濒、蘋果開發(fā)者后臺
在 蘋果開發(fā)者后臺 中找到對應的APPID呆盖,開啟配置,如下圖:
2贷笛、Xcode 工程
Xcode 工程的配置也沒啥好說的应又,只需要關(guān)注一點 Domains 的填充內(nèi)容是以applinks:域名
的格式即可,如圖:
3乏苦、apple-app-site-association文件
建議參考官方文檔 Support Universal Links株扛,emmm... 懶得看的話,繼續(xù)看我寫的:
創(chuàng)建一個文件命名 apple-app-site-association
不帶任何后綴的文件汇荐,文件內(nèi)容:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamId.com.xxx.xxx",
"paths": [ "*","/wwdc/news/","/qq_conn/101577777/*"]
},
{
"appID": "TeamId.com.xxx.xxx",
"paths": [ "*","/wwdc/news/","/qq_conn/101566666/*"]
}
]
}
}
說明
appID
:開發(fā)者團隊ID與bundle id的組合
paths
:用于關(guān)聯(lián)或者不想關(guān)聯(lián)的網(wǎng)站部分洞就,值可以是一個字符串數(shù)組。如上文使用的*
代指整個網(wǎng)站掀淘;/wwdc/news/
為指定特定的鏈接旬蟋;/qq_conn/101566666/*
附加 *
表示為網(wǎng)站的一部分后續(xù)可以增加其它內(nèi)容。具體使用可以參考官方文檔革娄,根據(jù)自身所需來填寫 paths
的值倾贰。
完成 apple-app-site-association
文件的編輯后,將文件放置 服務器的根目錄或.well-known子目錄
拦惋,該文件能夠通過 HTTPS 訪問即可匆浙,請使用一下路徑進行訪問:
根目錄訪問URL
https://<domain>/apple-app-site-association
.well-known 子目錄訪問URL
https://<domain>/.well-known/apple-app-site-association
<domain>
替換為對應的域名即可。
完成后可通過 蘋果官方提供Universal Links校驗 輸入域名進行訪問看是否成功厕妖,查詢結(jié)果如圖:
這樣算是完成配置了首尼,如果同個域名下需要配置多個APP,建議使用子域名的形式來實現(xiàn)言秸,將域名解析成對應每個項目的子域名软能,在每個子域名下都生成一份apple-app-site-association
文件,例如 aaa.baidu.com
井仰,配置xcode Associated Domains
的時候 domains 則輸入 aaa.baidu.com
即可埋嵌,后續(xù)通過瀏覽器訪問 aaa.baidu.com/xxx
即可出現(xiàn)提示打開APP。
注意:
瀏覽器上需要打開 APP 訪問的 URL 不需要部署到服務器俱恶,如果apple-app-site-association
文件的paths
配有通配符 *
的情況可以直接在域名后隨意拼接字符也能檢查出本地是否安裝有APP從而提示打開APP。
全域命中 universal link 問題:
由于項目中碰到一下問題范舀,深入探討了一下關(guān)于 iOS Associated Domains
配置 universal link
合是。問題復現(xiàn)如下:
- 項目A:配置的QQ
universal link
為 aaa1.com, 使用 QQ 授權(quán)返回APP的時候打開了項目C - 項目B:配置的微信
universal link
為 aaa1.com锭环,使用微信授權(quán)返回APP的時候打開了項目C - 項目C:配置了
Associated Domains
聪全,Xcode中填寫的Domains
為 aaa1.com
解決: 根據(jù) universal link 的校驗原理,針對這塊做一些修改即可辅辩,例如配置子域名來實現(xiàn)項目隔離难礼,或者是修改paths
來實現(xiàn)娃圆。
注: Associated Domains
與 QQ、微信
都是通過校驗apple-app-site-association
文件來實現(xiàn)蛾茉,但是QQ讼呢、微信
比Associated Domains
多了個配置管理后臺的universal link
,并且QQ谦炬、微信
是通過管理后臺配置的universal link
來校驗自身悦屏,因此通過配置universal link
避免全局命中。
結(jié)語
對接 QQ键思、微信授權(quán)神馬的 都是cmd + c础爬、cmd + v 配置universal link 看著提示梭哈完事,然后多項目深究一下 universal link 后跪了... emmm 寫個簡書記錄一下吼鳞。