iOS Universal Link(通用鏈接)

iOS 9之前,一直使用的是URL Schemes技術來從外部對App進行跳轉,但是iOS系統(tǒng)中進行URL Schemes跳轉的時候如果沒有安裝App,會提示Cannot open Page的提示,而且當注冊有多個scheme相同的時候,目前沒有辦法區(qū)分,但是從iOS 9起可以使用Universal Links技術進行跳轉頁面,這是一種體驗更加完美的解決方案。

  • 什么是Universal Link(通用鏈接)

Universal Link是Apple在iOS 9推出的一種能夠方便的通過傳統(tǒng)HTTPS鏈接來啟動APP的功能。如果你的應用支持Universal Link,當用戶點擊一個鏈接時可以跳轉到你的網站并獲得無縫重定向到對應的APP,且不需要通過Safari瀏覽器。如果你的應用不支持的話,則會在Safari中打開該鏈接。

  • 支持Universal Link(通用鏈接)

先決條件:必須有一個支持HTTPS的域名,并且擁有該域名下上傳到根目錄的權限(為了上傳Apple指定文件)。

1、在開發(fā)者中心配置Associated Domains

登錄蘋果開發(fā)者中心找到對應的APPID,配置Associated Domains,如下:

開發(fā)者中心配置圖片

2、配置指定文件(apple-app-site-association)

創(chuàng)建一個內容為json格式的文件,蘋果將會在合適的時候,從我們在項目中填入的域名請求這個文件。這個文件名必須為apple-app-site-association,切記沒有后綴名,文件內容大概是這樣子:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TeamID.BundleID",
                "paths": [ "/app/*", "/qq_conn/2222222/*"]
            }
        ]
    }
}

appID:組成方式是TeamID.BundleID。TeamIDBundleID就是第一步中的12
paths:設定你的app支持的路徑列表,只有這些指定路徑的鏈接,才能被app所處理。*的寫法代表了可識別域名下所有鏈接。
"/app/*"是自己定義的路徑;
"/qq_conn/22222222/*"需要根據QQ互聯平臺設置,22222222QQ互聯后臺對應應用的APPID。
ps:可先配置微信開放平臺QQ互聯平臺
如果上傳人員給你的訪問路徑是:
https://www.baidu.com/.well-known/apple-app-site-association
https://www.baidu.com/apple-app-site-association則:
微信開放平臺的Universal Link填寫是:https://www.baidu.com/app/
QQ互聯平臺的Universal Link填寫是:https://www.baidu.com/qq_conn/22222222/

3、上傳該文件

配置好文件后,把該文件給后臺開發(fā)人員上傳就可以了。上傳到域名所對應的 根目錄或者.well-known目錄下,這是為了蘋果能獲取到你上傳的文件。上傳完后,讓上傳人員給你一個訪問路徑,先訪問一下,看看是否能夠獲取到,當你在瀏覽器中輸入這個文件鏈接后, 出現下圖就可以了:

apple-app-site-association

4、在Xcode開發(fā)工具配置Associated Domains

在其中的Domains中填入你想支持的域名,必須以applinks:為前綴,如:applinks:domain
如果上傳人員給你的訪問路徑是:
https://www.baidu.com/.well-known/apple-app-site-association
https://www.baidu.com/apple-app-site-association
Domains中填入:applinks:www.baidu.com
配置好后run起來。

開發(fā)工具配置圖片

5、關于驗證Universal Links是否生效

蘋果為了方便開發(fā)者,提供了一個網頁驗證我們編寫的這個apple-app-site-association是否合法有效

a) 在Safari輸入Universal Links,查看是否彈出跳轉鏈接
b) 在iOS原生備忘錄上, 輸入Universal Links,點擊是否可以跳轉app
注意:手機上必須安裝你需要跳轉的應用并配置Associated Domains

  • Universal Link(通用鏈接)注意點

Universal Link跨域
Universal Link有跨域問題,Universal Link必須要求跨域,如果不跨域,就不會跳轉(iOS 9.2之后的改動)
假如當前網頁的域名是A,當前網頁發(fā)起跳轉的域名是B,必須要求B和A是不同域名才會觸發(fā)Universal Link,如果B和A是相同域名,只會繼續(xù)在當前WebView里面進行跳轉,哪怕你的Universal Link一切正常,根本不會打開App
Universal Link請求apple-app-site-association時機
當我們的App在設備上第一次運行時,如果支持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,所以如果想要避免服務器接收過多GET請求,可以直接把apple-app-site-association放在./well-known目錄下

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

  • Universal Link的好處

之前的Custom URL scheme是自定義的協(xié)議,因此在沒有安裝該app的情況下是無法直接打開的。而Universal Links本身就是一個能夠指向web頁面或者app內容頁的標準web link,因此能夠很好的兼容其他情況
Universal links是從服務器上查詢是哪個app需要被打開,因此不存在Custom URL scheme那樣名字被搶占、沖突的情況
Universal links支持從其他app中的UIWebView中跳轉到目標app
提供Universal link給別的app進行app間的交流時,對方并不能夠用這個方法去檢測你的app是否被安裝(之前的custom scheme URL的canOpenURL方法可以)

參考資料

iOS 喚起APP之Universal Link(通用鏈接)

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容