配置 Associated Domains

本文主要是講解一下開啟Associated Domains并實現(xiàn)通用鏈接universal link 的配置,以及對另外一篇文章 《QQ分享提示設(shè)備未授權(quán)(錯誤碼:25105)》關(guān)于QQ、微信對應(yīng)的universal link 的補充。

Associated Domains 主要作用就是由外部瀏覽器打開已安裝的APP,實現(xiàn)引流等作用。 iOS 9.0 之前的實現(xiàn)深度鏈接是通過 URL Types 白名單來實現(xiàn),白名單的方式存在弊端例如:與其它APP白名單重復(fù)了,導(dǎo)致無法正常跳轉(zhuǎn)至所需的APP。

Associated Domains 、QQ 、微信 校驗 universal link 的方式是共通—— 通過訪問服務(wù)器域名的根目錄或者.well-known子目錄下配置 apple-app-site-association 的文件來實現(xiàn)的。 這點很重要,后續(xù)如果出現(xiàn)問題,基本就是檢查一下是否開啟配置,訪問一下對應(yīng)域名下的apple-app-site-association文件,基本就可確定問題所在。

下面先講解一下關(guān)于 Associated Domains 配置(這部分基本就是百度一堆,這邊算是一個小小的記錄吧)。

Associated Domains 配置

配置Associated Domains需要進(jìn)行以下步驟來實現(xiàn):

  • 蘋果開發(fā)者后臺開啟 Associated Domains 配置
  • Xcode 工程開啟 Associated Domains 配置
  • 服務(wù)器端配置 apple-app-site-association 文件

1、蘋果開發(fā)者后臺

蘋果開發(fā)者后臺 中找到對應(yīng)的APPID,開啟配置,如下圖:

蘋果開發(fā)者后臺開啟 Associated Domains 配置

2、Xcode 工程

Xcode 工程的配置也沒啥好說的,只需要關(guān)注一點 Domains 的填充內(nèi)容是以applinks:域名 的格式即可,如圖:

Xcode 工程配置 Associated Domains

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ā)者團(tuán)隊ID與bundle id的組合
paths:用于關(guān)聯(lián)或者不想關(guān)聯(lián)的網(wǎng)站部分,值可以是一個字符串?dāng)?shù)組。如上文使用的* 代指整個網(wǎng)站;/wwdc/news/ 為指定特定的鏈接;/qq_conn/101566666/*附加 * 表示為網(wǎng)站的一部分后續(xù)可以增加其它內(nèi)容。具體使用可以參考官方文檔,根據(jù)自身所需來填寫 paths的值。

完成 apple-app-site-association 文件的編輯后,將文件放置 服務(wù)器的根目錄或.well-known子目錄,該文件能夠通過 HTTPS 訪問即可,請使用一下路徑進(jìn)行訪問:

根目錄訪問URL
https://<domain>/apple-app-site-association
.well-known 子目錄訪問URL
https://<domain>/.well-known/apple-app-site-association

<domain> 替換為對應(yīng)的域名即可。

完成后可通過 蘋果官方提供Universal Links校驗 輸入域名進(jìn)行訪問看是否成功,查詢結(jié)果如圖:

校驗結(jié)果

這樣算是完成配置了,如果同個域名下需要配置多個APP,建議使用子域名的形式來實現(xiàn),將域名解析成對應(yīng)每個項目的子域名,在每個子域名下都生成一份apple-app-site-association 文件,例如 aaa.baidu.com,配置xcode Associated Domains 的時候 domains 則輸入 aaa.baidu.com即可,后續(xù)通過瀏覽器訪問 aaa.baidu.com/xxx 即可出現(xiàn)提示打開APP。

注意:
瀏覽器上需要打開 APP 訪問的 URL 不需要部署到服務(wù)器,如果apple-app-site-association文件的paths 配有通配符 * 的情況可以直接在域名后隨意拼接字符也能檢查出本地是否安裝有APP從而提示打開APP。

全域命中 universal link 問題:
由于項目中碰到一下問題,深入探討了一下關(guān)于 iOS Associated Domains 配置 universal link。問題復(fù)現(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 DomainsQQ、微信都是通過校驗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 寫個簡書記錄一下。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容