關(guān)于Universal links的概念什么的,不用介紹了湃交,網(wǎng)上一大堆的概念介紹淮椰,本文著重記錄下Universal links的配置及微信sdk中Universal links的使用忱反。
Universal links的配置
-
登錄開發(fā)者網(wǎng)站纠修,找到需要配置的bundle id,如下圖:
點(diǎn)擊進(jìn)入您没,配置該bundle id的Capabilities鸟召,如下圖:
本頁(yè)面需要的操作:
- 記錄Team ID
- 將capabilities中的Associated Domains勾選,然后保存操作氨鹏。重新下載對(duì)應(yīng)的profile文件欧募,并安裝。
- 打開xcode仆抵,找到Signing&Capabilities跟继,找到Associated Domains,如果找不到Associated Domains镣丑,點(diǎn)擊左上角的Capbility添加即可舔糖。如下圖:
在Associated Domains中添加applinks:域名,示例如下:
applinks:www.test.com
關(guān)于此處的域名莺匠,稍后會(huì)做講解金吗。
完成配置后,xcode會(huì)自動(dòng)生成.entitlements文件。
3.配置apple-app-site-association辽聊。創(chuàng)建一個(gè)純文本文件,不帶后綴名期贫,命名為跟匆,內(nèi)容如下:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamID.Bundle Id",
"paths": ["*"]
}
]
}
}
注意:此處的appID的構(gòu)成,TeamID就是上面記錄的TeamID通砍。
文件創(chuàng)建完成后玛臂,將之上傳至HTTPS服務(wù)器根目錄或者.well-known這個(gè)子目錄下。
此處要確保:
- 使用https://domain.com/apple-app-site-association或者https://domain.com/.well-known/apple-app-site-association能夠訪問到(能夠下載或者返回文件內(nèi)容即可)封孙。這里的域名迹冤,就是2中配置xcode的Associated Domains時(shí)候提到的域名。
- 也可以使用蘋果的驗(yàn)證網(wǎng)站來驗(yàn)證文件是否能夠被訪問到虎忌。若應(yīng)用未上線泡徙,可能出現(xiàn)如下結(jié)果:
- 出現(xiàn)該結(jié)果,說明配置文件apple-app-site-association正確
- 出現(xiàn)404錯(cuò)誤膜蠢,則說明apple-app-site-association文件未上傳成功或者使用上面的域名不能訪問到堪藐。
至此,Universal links配置完畢挑围。
微信sdk中Universal links的使用
寫作本文時(shí)礁竞,用到的微信的openSDK版本是1.8.7.1,該版本強(qiáng)制使用Universal link杉辙。參照微信sdk介入指引即可完成介入模捂。但是如果完全按照該指引操作,可能會(huì)出現(xiàn)分享的時(shí)候蜘矢,進(jìn)行二次跳轉(zhuǎn)的異常狂男,具體表現(xiàn)就是:拉起微信后進(jìn)行授權(quán),然后立刻返回App硼端,然后再次調(diào)起微信并淋,這是由于通用鏈接授權(quán)失敗,第二次降級(jí)為URLScheme方式啟動(dòng)微信珍昨。
如果保證了Universal links的配置正確县耽,并且嚴(yán)格按照微信的接入文檔執(zhí)行操作,為什么通用鏈接授權(quán)還會(huì)失敗呢镣典?
在微信的接入文檔中兔毙,第二步操作如下圖:
如紅字部分所示,“建議Universal links配置path……”兄春。當(dāng)時(shí)澎剥,操作到這里的時(shí)候,又返回去修改apple-app-site-association文件赶舆,配置了path哑姚,但是在微信后臺(tái)中配置的Universal links并沒有配置path祭饭,App中調(diào)用微信openSDK的
+(BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink
方法的時(shí)候也沒有帶path,這就導(dǎo)致了微信sdk中Universal links校驗(yàn)不通過叙量。解決方式:
在微信公眾平臺(tái)注冊(cè)的通用鏈接要帶路徑倡蝙,App中調(diào)用微信openSDK的
+(BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink
方法的通用鏈接參數(shù)也一定要帶路徑,保持一致绞佩,單純的域名就會(huì)導(dǎo)致二次降級(jí)啟動(dòng)寺鸥。正確配置后,從微信返回的通用鏈接形式是:
https://域名/路徑/微信平臺(tái)的AppID