1. 背景說明
1.1 Universal Links 是什么
Support Universal Links 里面有說到 Universal Links 是什么、注意點、以及如何配置的。簡單來說就是
當(dāng)您支持通用鏈接時,iOS 用戶可以點擊指向您網(wǎng)站的鏈接,并無縫重定向到您安裝的應(yīng)用程序
大白話就是說,用戶通過點擊某個鏈接,可以直接喚起對應(yīng)的app。提供這樣功能的目的是為了吸引網(wǎng)絡(luò)用戶(俗稱引流)。
(注意url的變化,一定是用戶點擊造成的!使用js觸發(fā)是無效的)。
1.2 Universal Links 如何配置
簡單的來說,配置Universal Links需要涉及到兩方面:域名服務(wù)器和app:
① 域名服務(wù)器上要配置apple-app-site-association文件 (也被稱為AASA文件)
創(chuàng)建apple-app-site-association文件后,將其上傳到 HTTPS Web 服務(wù)器的根目錄或子目錄.well-known。該文件需要可通過 HTTPS 訪問(無需任何重定向),地址為https:///apple-app-site-association或https:///.well-known/apple-app-site-association。接下來,您需要處理應(yīng)用程序中的通用鏈接
即配置成以后,有3個鏈接要訪問成功才可以:
https://你的域名.com/apple-app-site-association
https://你的域名.com/.well-known/apple-app-site-association
https://app-site-association.cdn-apple.com/a/v1/你的域名.com
最后一個鏈接是蘋果CDN鏈接,可以理解為只要這個地址像下圖一樣返回正常,就說明我們配置的AASA文件沒有問題
② app上要在Xcode的Associated Domains里面去配置applinks
兩方面都要配置好,才能正常使用Universal Links 喚起app。配置OK后,可以在釘釘、微信、safari瀏覽器、掃描器等里面直接通過配置的域名喚起app。
2. 問題出現(xiàn)與調(diào)試
昨天17點的時候,發(fā)現(xiàn)Universal Links 無法正常喚起app了。打開那3個鏈接進(jìn)行調(diào)試,發(fā)現(xiàn)只有前個是可以正常訪問的。
https://你的域名.com/apple-app-site-association
https://你的域名.com/.well-known/apple-app-site-association
https://app-site-association.cdn-apple.com/a/v1/你的域名.com
第三個顯示Not Found
在shell里面運行:
curl -v https://app-site-association.cdn-apple.com/a/v1/你的域名.com
可以看到該請求的詳細(xì)信息:
< Apple-Failure-Details: {"status":"405 Not Allowed"}
< Apple-Failure-Reason: SWCERR00101 Bad HTTP Response: 405 Method Not Allowed
3. 修復(fù)總結(jié)
-
這個Universal Links 之前一直能正常訪問,ios app發(fā)版也沒有動過相關(guān)配置。為什么就失效了呢
-
前2個鏈接是可以正常訪問的,即apple-app-site-association的配置是ok的。問題出在最后一個連接上,Not Allowed 可能是我們的服務(wù)器不允許app-site-association.cdn-apple.com訪問
-
聯(lián)想到前幾天服務(wù)器受到了攻擊,所以運維調(diào)整了安全策略,有時候在我們的域名下可以安全提示。和運維確認(rèn)以后,得知運維禁止了所有的國外ip訪問。
-
但是在運維放開以后,訪問
https://app-site-association.cdn-apple.com/a/v1/你的域名.com
依然是 Not Found,似乎沒有任何變動。
-
正好那個時間還有幾分鐘就下班了,還要取寫每日云效和日報,就先沒管這個了。今天上班以后,發(fā)現(xiàn)鏈接可以訪問了。
回想可能是緩存問題,之前配置AASA文件的時候,就了解到AASA文件文件是有緩存的,或者說是apple CDN的緩存。修改AASA文件以后,從https://app-site-association.cdn-apple.com/a/v1/ 訪問可能不會馬上更新。這個緩存具體時間不確定,可能是幾小時或幾天不等。
-
也就是說即使我們修改了自己服務(wù)器上的apple-app-site-association文件,搭配app測試的時候,可能也不會馬上達(dá)到我們想要的效果。 比如一開始我們在AASA文件里面是這樣配置的:
"paths": [
"*"
]
??????這代表當(dāng)前域名下的所有url都會喚起我們的app
??????但是如果修改一下:
"paths": [
"NOT *-wx-*",
"*"
]
??????這表示我們想當(dāng)前域名下,含-wx-的url不會喚起app。但是當(dāng)我們修改了AASA文件,并更新到服務(wù)器以后,同時確保服務(wù)器文件已更新。
??????可能依然會發(fā)現(xiàn),測試效果并非我們所預(yù)測的那樣,包含-wx-的url依然會喚起app,此時查看
https://app-site-association.cdn-apple.com/a/v1/你的域名.com
??????會發(fā)現(xiàn),依然是
"paths": [
"*"
]
- 同文件內(nèi)容的緩存一樣,我感覺我們在放開國外ip訪問以后,https://app-site-association.cdn-apple.com/a/v1/ 或 apple CDN 并沒有馬上訪問更新。所以當(dāng)時沒有生效,但是第二天緩存更新就生效了
4. 注意點
當(dāng)用戶在 Safari 中瀏覽您的網(wǎng)站并點擊指向與當(dāng)前網(wǎng)頁位于同一域中的 URL 的通用鏈接時,iOS 會尊重用戶最可能的意圖并在 Safari 中打開該鏈接。
如果用戶點擊指向不同域中 URL 的通用鏈接,iOS 會在您的應(yīng)用程序中打開該鏈接。文章來源:http://www.zghlxwxcb.cn/news/detail-668018.html
文檔中這段話的意思是,如果我們有一個配置了Universal Links的域名A。
當(dāng)時用戶從A域名打開A域名的時候(A->A),不會觸發(fā)APP跳轉(zhuǎn)。
只有用戶另外的B域名點擊去到A域名的時候(B->A),才會觸發(fā)APP的跳轉(zhuǎn),B域名是普通的域名。文章來源地址http://www.zghlxwxcb.cn/news/detail-668018.html
到了這里,關(guān)于關(guān)于ios Universal Links apple-app-site-association文件 Not Found的問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!