iOS 配置 Universal Links

前言

由于對接微信分享的時候發(fā)現(xiàn)微信的SDK 1.8.6需要支持Universal Links,于是查看官網(wǎng)以及各個博客資源
結(jié)合自身實際操作,記錄在案

文檔&資料

1、Support Universal Links - 支持通用鏈接
這份文檔講的比較詳細(xì),說到了很重要的一點,下面具體操作會提到

NOTE
Don’t append .json to the apple-app-site-association filename.

2、Supporting Associated Domains in Your App
這份文檔仔細(xì)講了2種(iOS12以后、iOS12以前)apple-app-site-association文件的寫法,按需參考

3、蘋果官方驗證網(wǎng)址
配置好后可以在這個網(wǎng)頁里面驗證是否配置成功

操作

這里以xcode11為例

1、在工程中添加 Associated Domains

按序操作

Domains的配置以applinks:開頭,后面寫你放置apple-app-site-association文件的域名,到根目錄即可

2、登錄蘋果開發(fā)者后臺,在你的 APPID 中支持 Associated Domains,并更新 Profile 文件

3、配置 apple-app-site-association 文件
配置方式可以參照上面文檔1文檔2
創(chuàng)建一個名為apple-app-site-association的json文件

{
    "applinks": {
        "apps": [],
        "details": [{
            "appID": "你的TeamID.你的Bundle ID",
            "paths": ["*"]
            }]
    }
}

apps后面的數(shù)組為空就好,主要內(nèi)容配置在details里面
包含:appIDpaths

這里著重講一下paths
path是設(shè)定你的app支持的路徑列表,只有訪問到域名下對應(yīng)path的地址才會喚起APP。
其中可以使用通配符*或者/app/*
具體路徑地址/app/home
還可以忽略某種規(guī)則NOT /help/website/*

劃重點:填寫完畢后保存,并且將文件.json后綴刪掉,沒錯,刪掉,會變成一個不能正常打開的文件

4、上傳apple-app-site-association到你的服務(wù)器根目錄或者.well-known目錄
上傳完后,先訪問一下,看看是否能夠獲取到,當(dāng)你在瀏覽器中輸入這個文件鏈接后,應(yīng)該是直接下載apple-app-site-association文件

同時可以訪問蘋果官方驗證,來校驗?zāi)阄募欠裾_上傳

如果校驗成功會展示以上信息

Error no apps with domain entitlements 是因為還沒有發(fā)布

5、以上做完之后可以安裝APP到手機(jī)上
用Safari訪問你的服務(wù)器域名+你的path

https://域名/path/

下拉查看是否有打開APP入口(如下圖)。若無入口,可能是由于系統(tǒng)拉取Universal Links失敗,請檢查手機(jī)網(wǎng)絡(luò)狀態(tài)是否正常,或更新/重裝APP。

image.png

系統(tǒng)只會在第一次安裝/啟動APP的時候去拉取Universal Links

6、到這里基本算配置成功了,如果還想美化一下目標(biāo)頁面的話,可以參考這兩篇文檔(純英文)
這兩個都是通過配置meta來調(diào)整頭部標(biāo)簽的,有興趣可以了解一下
配置WebPage的方式
The Open Graph protocol

需要注意的幾點

原文出處:https://blog.csdn.net/gsl111000/article/details/102937698

1、Universal Link跨域
Universal Link有跨域問題,Universal Link必須要求跨域,如果不跨域,就不會跳轉(zhuǎn)(iOS 9.2之后的改動)
假如當(dāng)前網(wǎng)頁的域名是A,當(dāng)前網(wǎng)頁發(fā)起跳轉(zhuǎn)的域名是B,必須要求B和A是不同域名才會觸發(fā)Universal Link,如果B和A是相同域名,只會繼續(xù)在當(dāng)前WebView里面進(jìn)行跳轉(zhuǎn),哪怕你的Universal Link一切正常,根本不會打開App

2、Universal Link請求apple-app-site-association時機(jī)

  • 當(dāng)我們的App在設(shè)備上第一次運(yùn)行時,如果支持Associated Domains功能,那么iOS會自動去GET定義的Domain下的apple-app-site-association文件

  • iOS會先請求https://domain.com/.well-known/apple-app-site-association,如果此文件請求不到,再去請求https://domain.com/apple-app-site-association,所以如果想要避免服務(wù)器接收過多GET請求,可以直接把a(bǔ)pple-app-site-association放在./well-known目錄下

  • 服務(wù)器上apple-app-site-association的更新不會讓iOS本地的apple-app-site-association同步更新,即iOS只會在App第一次啟動時請求一次,以后除非App更新或重新安裝,否則不會在每次打開時請求apple-app-site-association

記錄一個小問題

集成微信1.8.6.2版本的微信分享SDK時,引入工程發(fā)現(xiàn)根據(jù)官方文檔配置的依賴仍然缺少,編譯報錯
需要添加libc++.tbd
或者將工程支持c++編譯,把其中一個文件后綴改為.mm即可

QQ分享的校驗

QQ也發(fā)布了關(guān)于Universal Link的支持與適配
官方文檔教你如何配置
看過之前的講解之后,這里簡單陳述一下
由于qq對于path有一定的要求,apple-app-site-association文件需要我們單獨按照qq的配置

{
     "appID": "EB333MN775.com.hundsun.InternetSellTicket.appstore",
     "paths": [
         ...
         "/qq_conn/${你的qq應(yīng)用APPId}/*"
     ]
}

然后去開放平臺維護(hù)一下相關(guān)信息,校驗通過之后就可以了

最后編輯于
?著作權(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)容