iOS 配置 Universal Links

前言

由于對接微信分享的時候發現微信的SDK 1.8.6需要支持Universal Links,于是查看官網以及各個博客資源
結合自身實際操作,記錄在案

文檔&資料

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

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

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

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

操作

這里以xcode11為例

1、在工程中添加 Associated Domains

按序操作

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

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

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

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

apps后面的數組為空就好,主要內容配置在details里面
包含:appIDpaths

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

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

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

同時可以訪問蘋果官方驗證,來校驗你文件是否正確上傳

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

Error no apps with domain entitlements 是因為還沒有發布

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

https://域名/path/

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

image.png

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

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

需要注意的幾點

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

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

2、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

記錄一個小問題

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

QQ分享的校驗

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

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

然后去開放平臺維護一下相關信息,校驗通過之后就可以了

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

推薦閱讀更多精彩內容