Universal Link的理解

原理

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

客戶端和服務端的任務

根據上述原理,客戶端的首要任務就是要告訴系統去哪個域名下找關聯文件。這個在associated domain中設置。

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

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

關聯文件的格式,可以參考幾個鏈接:

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

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

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

幾個點

? ? ? ?通過抓包看,的確是安裝時候就會去下載關聯文件。如果此時網絡不通,iOS有重試的機制,但具體的策略不太清楚。

? ? ? ? iOS9+,不要拿著iOS8系統的手機過來說,為什么ul不起作用。。。

? ? ? ? 有時候不是跳轉到app,而是直接跳轉到瀏覽器打開。其實這是正常的,本來就是應該跳轉到safari的,只是我們多了一個跳轉到app的選擇。第一次鏈接跳轉,會給你一個選擇,safari還是app,系統會記住并作為下一次默認的選擇。

? ? ? ? 如果想讓url直接跳轉到我們的app,可以訪問一下域名+path的地址,在safari中下拉頁面,會看到一個從app打開的選擇,又可以重新選擇了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容