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,位置如下圖
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ū)域視為通用鏈接,如下所示:
"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)限
如下圖
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)的方法:
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)
參考鏈接:蘋果通用鏈接