什么是通用鏈接衷咽?
通用鏈接是iOS9推出的一項新功能,如果你的應用(app)支持通用鏈接(Universal Link)之后默伍,iOS用戶能夠在點擊網頁的鏈接的時候無縫的重定向到已經安裝的app持搜,不需要額外的任何操作。如果沒有安裝對應的app劫樟,那么點擊鏈接會使用Safari打開網頁。在iOS9以前盯蝴,對于各種瀏覽器毅哗,Safari中喚醒app的需求听怕,我們通常是只能使用scheme的方式捧挺。
為什么要突然改用通用鏈接的配置方式?
我們的項目中喚起第三方app一般是通過配置對應的URL Scheme的方式使用的尿瞭,微信SDK的最新版本openSDK1.8.6 由于蘋果iOS 13系統(tǒng)版本安全升級闽烙,為此openSDK在1.8.6版本進行了適配。 1.8.6版本支持Universal Links方式跳轉声搁,對openSDK分享進行合法性校驗黑竞,提升使用過程中的安全性。
要求在注冊微信appid時疏旨,必須要傳入universalLink很魂,以前的方法在舊版本仍然可使用。所以就開始研究通用鏈接(Universal Link)的配置
如何配置通用鏈接檐涝?
1遏匆、創(chuàng)建json格式的一個空文件(取名必須為apple-app-site-association,并且沒有后綴)
這里的appID是指:TeamID+BundleId的組成(例:9JA89QQLNQ.com.apple.test)(TeamID可以在開發(fā)者賬號里面查看谁榜,BundleId是項目的Bundle Identifier)幅聘。
這里的paths是指:是設置允許的路徑列表,可以是一個也可以是多個窃植,最簡單的方式是使用“*”帝蒿,通配符,表示允許該域名下的任意路徑巷怜。(注意:paths中的大小寫是敏感的葛超,一定要一一對應)
2、上傳apple-app-site-association文件(這里就能拿到app中配置需要的域名)
(1)將apple-app-site-association文件發(fā)給服務器端的同事延塑,讓他上傳到域名的根目錄下或者.well-known的子目錄下(這里的域名必須要是可訪問的域名绣张,由服務器端的同事給到)。
(2)Web server需要支持https页畦,客戶端通過https來訪問胖替,并且不支持重定向。
3、在app中處理通用鏈接
(1)添加對應的域名(上面知道的域名)到Capabilities
在項目里面定位到Capabilities独令,找到Associated Domains端朵,點擊允許按鈕,在Domains中添加對應的域名燃箭。(Domains中的域名必須是使用applinks開頭冲呢,然后輸入自己的域名即可。注意:當app第一次啟動之后招狸,會自動從你自己的域名目錄下下載這個apple-app-site-association文件敬拓。)
注:這里可能會遇到一個錯誤就是你的App ID中并沒有允許使用Associated Domains,所以需要進入開發(fā)者中心裙戏,編輯App ID允許Associated Domains乘凸,并且重新生成對應的簽證文件并下載安裝。在最新xcode11累榜,添加了該項营勤,開發(fā)者賬號該appId下自動打開
(2)實現(xiàn)AppDelegate里支持通用鏈接的實現(xiàn)方法
這里如果是從舊版更新WechatOpenSDK1.8.6版本的話,需要在這個里面調用微信里的這個方法壹罚,并且在Xcode中葛作,選擇你的工程設置項,選中“TARGETS”一欄猖凛,在 “info”標簽欄的“LSApplicationQueriesSchemes“添加weixin和weixinULAPI赂蠢,可通過微信開放平臺的接入文檔步驟一步步進行修改或添加。
注:這里的weixinULAPI注意大小寫辨泳,我之前是添加了一個weixinulapi小寫的進去虱岂,結果都注冊失敗,一直沒找到原因漠吻,直到我調用微信打印log的方法量瓜,才知道是沒添加到weixinULAPI這個schemes,大小寫沒區(qū)分