iOS通用鏈接universalLink詳細(xì)解答

1.簡(jiǎn)介

universal是iOS9后新增的特性,通過universalLink可以快速打開APP。相較于URL scheme的方案,有如下優(yōu)點(diǎn):

  • 獨(dú)特。與自定義URL方案不同,其他應(yīng)用程序不能聲明通用鏈接,因?yàn)樗鼈兪褂弥赶蚰W(wǎng)站的標(biāo)準(zhǔn)HTTP或HTTPS鏈接。
  • 安全。當(dāng)用戶安裝您的應(yīng)用程序時(shí),iOS會(huì)檢查您已上傳到Web服務(wù)器的文件,以確保您的網(wǎng)站允許您的應(yīng)用程序代表其打開URL。只有您可以創(chuàng)建和上傳此文件,因此您的網(wǎng)站與應(yīng)用程序的關(guān)聯(lián)是安全的。
  • 靈活。即使未安裝您的應(yīng)用程序,通用鏈接也可以使用。如果未安裝您的應(yīng)用程序,則按用戶期望,點(diǎn)擊指向您網(wǎng)站的鏈接可在Safari中打開內(nèi)容。
  • 簡(jiǎn)單。一個(gè)URL既適用于您的網(wǎng)站,也適用于您的應(yīng)用程序。
  • 私人的。其他應(yīng)用可以與您的應(yīng)用通信,而無需知道您的應(yīng)用是否已安裝。

本次替換是因?yàn)槲⑿盘D(zhuǎn)小程序,WXOpenSDK的api必須傳universalLink校驗(yàn),所以研究了下。

添加通用鏈接的步驟簡(jiǎn)單分為下面三步:

  • 創(chuàng)建apple-app-site-association文件,包含引用程序處理URL的JSON數(shù)據(jù)文件;
  • 將apple-app-site-association文件上傳到HTTPS Web服務(wù)器。將文件放置在服務(wù)器根目錄或.well-known子目錄中;
  • 配置APP以處理通用鏈接;

注意

通用鏈接可讓用戶在點(diǎn)擊鏈接到您的網(wǎng)站[WKWebView](https://developer.apple.com/documentation/webkit/wkwebview)以及[UIWebView](https://developer.apple.com/documentation/uikit/uiwebview)視圖和Safari頁面中的鏈接時(shí)打開您的應(yīng)用程序,此外還可以鏈接到[openURL:](https://developer.apple.com/documentation/uikit/uiapplication/1622961-openurl),例如在Mail,Messages和其他應(yīng)用程序中發(fā)生的鏈接。

當(dāng)用戶在Safari中瀏覽您的網(wǎng)站時(shí),他們點(diǎn)擊指向當(dāng)前網(wǎng)頁所在域中URL的通用鏈接,iOS會(huì)尊重該用戶最有可能的意圖并在Safari中打開該鏈接。如果用戶點(diǎn)擊指向其他域中URL的通用鏈接,iOS將在您的應(yīng)用中打開該鏈接。

對(duì)于運(yùn)行9.0之前的iOS版本的用戶,點(diǎn)擊指向您網(wǎng)站的通用鏈接可在Safari中打開該鏈接。

2.實(shí)現(xiàn)

2.1 創(chuàng)建apple-app-site-association文件

apple-app-site-association文件格式如下

{
"applinks": {
"apps": [],
"details": [{
"appID": "Team ID.explicit",
"paths": ["*"]
}]
}
}

注意apple-app-site-association文件不要加后綴

appID的格式為:teamID.explicit,位置如下圖

image.png

appID密鑰的值是團(tuán)隊(duì)ID或應(yīng)用程序ID前綴,后跟捆綁軟件ID。對(duì)應(yīng)上面紅框中的兩個(gè)值

paths鍵的值是一個(gè)字符串?dāng)?shù)組,用于指定應(yīng)用程序支持的網(wǎng)站部分以及您不想與該應(yīng)用程序關(guān)聯(lián)的網(wǎng)站部分。

要指定不應(yīng)作為通用鏈接處理的區(qū)域,請(qǐng)?jiān)诼窂阶址拈_頭添加“ NOT”(包括之后的空格T)。

例如,下面所示的文件可以防止/videos/wwdc/2010/*通過更新paths數(shù)組,將網(wǎng)站區(qū)域視為通用鏈接,如下所示:

  1. "paths": [ "/wwdc/news/", "NOT /videos/wwdc/2010/*", "/videos/wwdc/201?/*"]

注意

1.用于在paths數(shù)組中指定網(wǎng)站路徑的字符串區(qū)分大小寫;

2.使用*指定整個(gè)網(wǎng)站;

3.包含特定的URL,例如/wwdc/news/,以指定特定的鏈接;

4.用添加到特定的URL,例如NOT /videos/wwdc/2010/,可以指定網(wǎng)站的一部分;

5.使用?匹配單個(gè)字符,/videos/wwdc/201?/*

因?yàn)橄到y(tǒng)paths按照指定的順序評(píng)估數(shù)組中的每個(gè)路徑,并在找到正負(fù)匹配時(shí)停止評(píng)估,所以您應(yīng)在低優(yōu)先級(jí)路徑之前指定高優(yōu)先級(jí)路徑。

請(qǐng)注意,僅將URL的路徑部分用于比較。其他組件(例如查詢字符串或片段標(biāo)識(shí)符)將被忽略。

2.2 上傳到HTTPS Web服務(wù)器

2.2.1 創(chuàng)建apple-app-site-association文件

創(chuàng)建apple-app-site-association文件后,將其上傳到HTTPS Web服務(wù)器的根目錄或者.well-known子目錄。

需要通過HTTPS在https://<domain>/apple-app-site-association或https://<domain>/.well-known/apple-app-site-association進(jìn)行訪問,而無需任何重定向;

其中<domain>路徑為我們?cè)贏PP內(nèi)applinks中配置的路徑,下面會(huì)說到。

2.2.2 注意:

1.給后臺(tái)的apple-app-site-association文件不能有后綴;

2.注意檢查格式,防止有其他字符或者亂碼導(dǎo)致無法跳轉(zhuǎn);

2.2.3 取到后臺(tái)路徑后校驗(yàn)方法

1.把鏈接粘貼到備忘錄,點(diǎn)擊看能否直接跳轉(zhuǎn)到APP,或者長(zhǎng)按鏈接看有沒有彈出跳轉(zhuǎn)到APP的選項(xiàng);

2.通過蘋果API工具App Search API驗(yàn)證工具校驗(yàn),結(jié)果以1為準(zhǔn);

3.你將要測(cè)試的網(wǎng)址在safari中打開,在出現(xiàn)的網(wǎng)頁上方(the Smart App Banner),可以看到有在”XX”應(yīng)用中打開

2.3 APP設(shè)置

2.3.1 開啟Associated Domains權(quán)限

如下圖

image.png

Xcode內(nèi)設(shè)置如下圖,Domains格式applinks:offlinetest.e***x.net,offlinetest.e***x.net對(duì)應(yīng)2.2的<domain>

3.APP內(nèi)使用

當(dāng)點(diǎn)擊某個(gè)鏈接,直接可以進(jìn)我們的app了,但是我們的目的是要能夠獲取到用戶進(jìn)來的鏈接,根據(jù)鏈接來展示給用戶相應(yīng)的內(nèi)容。
我們需要在工程里的實(shí)現(xiàn)AppDelegate里對(duì)應(yīng)的方法:

image.png

4.注意

通過2.2.3校驗(yàn)通過,但是在跳轉(zhuǎn)微信時(shí)候還是提示universal link校驗(yàn)不通過。分析原因是微信開放平臺(tái)配置的universalLink和當(dāng)前鏈接不匹配,去更新就行

某系第三方,如sharaSDK提供了一個(gè)universalLink可直接使用,當(dāng)然也可以選擇自己生成

通過其他平臺(tái)管理:通過openinstall平臺(tá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ù)。

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