Universal Link的理解

原理

? ? ? ? 在安裝某個(gè)app的時(shí)候,iOS系統(tǒng)會(huì)檢查App bundle中的Info.plist文件。如果發(fā)現(xiàn)有associated domain字段,會(huì)讀取applinks的地址,比如open.mycompany.com,然后系統(tǒng)會(huì)去該域名根目錄下尋找一個(gè)名為apple-app-site-association的文件。如果有,那么下載到本地,然后解析這個(gè)文件。根據(jù)path建立與appid的映射關(guān)系,保存在系統(tǒng)的數(shù)據(jù)庫(kù)中。如果有訪問(wèn)https://open.mycompany.com/path/ 的鏈接,系統(tǒng)會(huì)根據(jù)映射關(guān)系找到的appid,啟動(dòng)該app,實(shí)現(xiàn)universal link。

客戶端和服務(wù)端的任務(wù)

根據(jù)上述原理,客戶端的首要任務(wù)就是要告訴系統(tǒng)去哪個(gè)域名下找關(guān)聯(lián)文件。這個(gè)在associated domain中設(shè)置。

剩下的就是在app delegate文件里寫處理的方法了。

服務(wù)端的任務(wù)就是部署這個(gè)文件,文件位置可以隨便放,但是訪問(wèn)的地址一定要是域名的根目錄下。

關(guān)聯(lián)文件的格式,可以參考幾個(gè)鏈接:

https://www.douban.com/apple-app-site-association

https://open.cmbchina.com/apple-app-site-association

雖然是json格式的,但是文件名不能有后綴名哦。

幾個(gè)點(diǎn)

? ? ? ?通過(guò)抓包看,的確是安裝時(shí)候就會(huì)去下載關(guān)聯(lián)文件。如果此時(shí)網(wǎng)絡(luò)不通,iOS有重試的機(jī)制,但具體的策略不太清楚。

? ? ? ? iOS9+,不要拿著iOS8系統(tǒng)的手機(jī)過(guò)來(lái)說(shuō),為什么ul不起作用。。。

? ? ? ? 有時(shí)候不是跳轉(zhuǎn)到app,而是直接跳轉(zhuǎn)到瀏覽器打開(kāi)。其實(shí)這是正常的,本來(lái)就是應(yīng)該跳轉(zhuǎn)到safari的,只是我們多了一個(gè)跳轉(zhuǎn)到app的選擇。第一次鏈接跳轉(zhuǎn),會(huì)給你一個(gè)選擇,safari還是app,系統(tǒng)會(huì)記住并作為下一次默認(rèn)的選擇。

? ? ? ? 如果想讓url直接跳轉(zhuǎn)到我們的app,可以訪問(wèn)一下域名+path的地址,在safari中下拉頁(yè)面,會(huì)看到一個(gè)從app打開(kāi)的選擇,又可以重新選擇了。

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

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

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