久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

iOS多客戶端共用Universal Link配置實戰(zhàn)與避坑指南

iOS多客戶端共用Universal Link配置實戰(zhàn)與避坑指南 1. 從一個真實場景說起為什么多個客戶端要共用一條拉起鏈接做過iOS端分享拉新或者跨端跳轉(zhuǎn)的同學(xué)大概率都遇到過這樣一個需求市場部給了一條推廣鏈接希望A應(yīng)用、B應(yīng)用、甚至H5頁面都能通過這一條鏈接把用戶拉起來而且拉起之后還要能區(qū)分是誰拉起來的、要跳到哪個具體頁面。聽起來簡單但真到配置Universal Link的時候坑就一個接一個冒出來了。Universal Link通用鏈接是蘋果在iOS 9之后推出的一種通過HTTPS鏈接直接喚起App的機制。它最大的好處是不需要像URL Scheme那樣彈一個是否打開某某App的確認(rèn)框用戶點擊鏈接就能絲滑進入App體驗上幾乎和網(wǎng)頁跳轉(zhuǎn)一樣自然。但它的配置門檻也比URL Scheme高得多——需要在蘋果開發(fā)者后臺配置Associated Domains、需要在服務(wù)器上放置apple-app-site-association文件簡稱AASA文件、需要處理路徑匹配規(guī)則任何一環(huán)出問題鏈接就拉不起來。而多個客戶端共用同一條拉起鏈接這個需求把難度又往上抬了一檔。因為默認(rèn)情況下一條Universal Link只能對應(yīng)一個App的Team ID和Bundle ID組合。如果你有多個App比如主App、極速版、商家端、騎手端它們各自有不同的Bundle ID卻想共用同一個域名下的同一條鏈接就必須在AASA文件里做文章讓蘋果的匹配機制能同時識別多個App。這篇文章我會從原理講到實操把多客戶端共用Universal Link的完整配置流程、路徑匹配的坑、AASA文件的寫法、以及我實際踩過的幾個大坑都掰開揉碎講清楚。不管你是剛接觸Universal Link的新手還是已經(jīng)配過單App、現(xiàn)在要擴展到多App的老手都能從里面找到能直接抄作業(yè)的東西。2. Universal Link的工作機制與多客戶端共用的核心矛盾2.1 一條鏈接是怎么被系統(tǒng)認(rèn)領(lǐng)的要理解多客戶端共用的難點得先搞清楚Universal Link的匹配流程。整個鏈路大致是這樣的用戶在任意位置短信、網(wǎng)頁、其他App點擊一條https://yourdomain.com/path的鏈接。iOS系統(tǒng)攔截這個點擊去本地緩存里查找這個域名對應(yīng)的AASA文件記錄。系統(tǒng)拿當(dāng)前設(shè)備上已安裝的所有App逐個比對AASA文件里聲明的appIDTeamID.BundleID和paths規(guī)則。如果某個App的appID匹配上且點擊的路徑也命中該App聲明的paths系統(tǒng)就直接喚起這個App并把完整URL傳給App的continueUserActivity回調(diào)。如果沒有任何App匹配鏈接就正常用Safari打開。關(guān)鍵點在于第3步系統(tǒng)是拿設(shè)備上已安裝的App去和AASA文件做匹配的。也就是說AASA文件里必須同時聲明所有希望被這條鏈接喚起的App的appID并且每個App的paths規(guī)則要寫清楚它負(fù)責(zé)響應(yīng)哪些路徑。這里有個容易被忽略的細(xì)節(jié)AASA文件的緩存機制。iOS系統(tǒng)不會每次點擊都去服務(wù)器拉最新的AASA文件而是會在App安裝時拉一次之后由系統(tǒng)按自己的節(jié)奏通常是幾天或者App更新時刷新。蘋果的CDN也會緩存AASA文件。這就導(dǎo)致你改了AASA文件之后可能幾個小時甚至幾天都不生效。這是后面排查問題時必須記住的一條。2.2 多客戶端共用的三種典型訴求在實際項目里多個客戶端共用一條鏈接通常對應(yīng)三種不同的業(yè)務(wù)訴求配置方式也不一樣訴求一同一App的不同變體。比如主App和極速版Bundle ID不同但功能高度重合希望同一條鏈接在裝了主App的設(shè)備上拉起主App裝了極速版的設(shè)備上拉起極速版。這種是最常見的。訴求二不同角色的App。比如用戶端和商家端同一條營銷鏈接用戶點了進用戶端商家點了進商家端。這種通常需要結(jié)合路徑或者參數(shù)來區(qū)分。訴求三App和H5兜底。裝了App就拉起App沒裝就用H5打開對應(yīng)頁面。這是Universal Link的天然能力但多App場景下兜底邏輯會更復(fù)雜。這三種訴求的核心矛盾是一樣的一條鏈接、一個域名、一份AASA文件卻要服務(wù)多個appID。解決思路就是在AASA文件里用數(shù)組的方式聲明多個App并給每個App分配清晰的路徑規(guī)則避免路徑重疊導(dǎo)致的匹配歧義。2.3 為什么不能簡單粗暴地讓所有App聲明所有路徑有同學(xué)可能會想那我干脆讓每個App的paths都寫成[*]不就都能拉起來了嗎理論上可行但實際會出問題。當(dāng)多個App都聲明了[*]系統(tǒng)在匹配時如果發(fā)現(xiàn)多個App都命中行為是不確定的——蘋果沒有明確文檔說明這種情況下會優(yōu)先拉起哪個。實測下來通常是按AASA文件里App聲明的順序或者按App安裝時間但這個順序并不可靠不同iOS版本表現(xiàn)還不一樣。所以正確做法是用路徑把不同App的職責(zé)區(qū)分開讓每條路徑只對應(yīng)一個明確的App。3. AASA文件的正確寫法多App聲明的完整配置3.1 AASA文件的基本結(jié)構(gòu)AASA文件是一個純JSON文件必須放在域名的根目錄下路徑固定為https://yourdomain.com/.well-known/apple-app-site-association。注意幾個硬性要求文件必須通過HTTPS訪問不能有重定向301/302都不行必須是200直接返回。Content-Type必須是application/json不能是text/plain。文件不能超過128KB未壓縮。不需要.json后綴文件名就是apple-app-site-association。一個支持多App的AASA文件結(jié)構(gòu)大概長這樣{ applinks: { apps: [], details: [ { appID: TEAMID1.com.example.app.main, paths: [/share/*, /promo/*, /home/*] }, { appID: TEAMID2.com.example.app.lite, paths: [/share/*, /promo/*] }, { appID: TEAMID3.com.example.app.merchant, paths: [/merchant/*, /shop/*] } ] } }這里有幾個關(guān)鍵點要展開說。apps字段必須是一個空數(shù)組這是蘋果的歷史遺留字段現(xiàn)在填任何東西都會被忽略但必須存在且為空。details是一個數(shù)組每個元素代表一個App的聲明。appID的格式是TeamID.BundleIDTeamID是蘋果開發(fā)者賬號的團隊ID10位字符BundleID就是App的包名。這兩個必須完全匹配錯一個字符都匹配不上。paths是路徑規(guī)則數(shù)組支持通配符*和?。*匹配任意多個字符?匹配單個字符。注意路徑是區(qū)分大小寫的/Share/*和/share/*是兩條不同的規(guī)則。3.2 多App路徑分配的實戰(zhàn)策略路徑分配是整套配置里最需要動腦子的地方。我的經(jīng)驗是遵循先分域、再分路徑的原則。所謂分域是指如果不同App的業(yè)務(wù)差異大盡量用不同的路徑前綴把它們隔開。比如用戶端用/u/*商家端用/m/*這樣AASA文件里各App的paths完全不重疊匹配邏輯最清晰也最不容易出問題。如果業(yè)務(wù)上確實需要共用某些路徑比如/share/*這種營銷鏈接用戶端和極速版都要響應(yīng)那就讓多個App聲明同一條路徑。這時候系統(tǒng)會優(yōu)先拉起哪個實測下來如果兩個App都裝了通常是AASA文件里排在前面的那個App被拉起。但這個行為不是蘋果官方保證的所以如果你的業(yè)務(wù)強依賴必須拉起某一個就不要讓路徑重疊而是通過URL參數(shù)在App內(nèi)部再做一次判斷。我一般會這樣設(shè)計路徑路徑前綴負(fù)責(zé)App用途/share/*主App、極速版分享拉新兩者都響應(yīng)/promo/*主App、極速版活動推廣兩者都響應(yīng)/merchant/*商家端商家專屬獨占/rider/*騎手端騎手專屬獨占/web/*無H5兜底不聲明走網(wǎng)頁這樣設(shè)計的好處是營銷類鏈接多端共用業(yè)務(wù)類鏈接各端獨占邏輯清晰后期擴展也方便。3.3 關(guān)于components字段的補充說明蘋果在iOS 13之后引入了新的components字段用來替代paths功能更強大支持查詢參數(shù)和片段匹配。寫法是這樣的{ applinks: { apps: [], details: [ { appID: TEAMID1.com.example.app.main, components: [ { /: /share/*, ?: { channel: ?* }, comment: 分享鏈接必須帶channel參數(shù) } ] } ] } }components里每個對象可以指定/路徑、?查詢參數(shù)、#片段的匹配規(guī)則還能用exclude字段排除某些情況。功能確實比paths強但兼容性上要注意iOS 13以下的設(shè)備不認(rèn)components只認(rèn)paths。所以如果你的App還要支持iOS 12及以下建議paths和components同時寫讓老系統(tǒng)走paths新系統(tǒng)走components。不過現(xiàn)在iOS 12以下的設(shè)備占比已經(jīng)極低了新項目基本可以只用components。但如果你的用戶群體里有大量老設(shè)備還是穩(wěn)妥點兩個都寫。4. 蘋果開發(fā)者后臺與Xcode的配置實操4.1 開發(fā)者后臺開啟Associated DomainsAASA文件配好了還得在蘋果開發(fā)者后臺給每個App開啟Associated Domains能力。步驟是登錄開發(fā)者后臺進入Certificates, Identifiers Profiles。找到對應(yīng)的App ID注意是App ID不是Bundle ID雖然兩者通常一致。在Capabilities列表里勾選Associated Domains。保存后如果用的是手動簽名需要重新生成Provisioning Profile并下載。這一步每個App都要單獨做。多個App就重復(fù)多次。這里有個坑如果你用的是自動簽名Automatically manage signingXcode會自動幫你處理但前提是你在Xcode里配置了正確的Team。4.2 Xcode里的Associated Domains配置在Xcode里選中Target進入Signing Capabilities添加Associated Domains能力然后在Domains列表里添加applinks:yourdomain.com注意格式必須是applinks:前綴后面跟域名不要帶https://不要帶路徑不要帶末尾斜杠。正確的寫法是applinks:yourdomain.com錯誤的寫法包括applinks:https://yourdomain.com、applinks:yourdomain.com/、applinks:yourdomain.com/path。如果你有多個域名就加多行。如果同一個域名下有多個App每個App的Target里都要加這一行。這里有個細(xì)節(jié)如果你在開發(fā)階段想同時支持測試域名和生產(chǎn)域名可以兩個都加上applinks:yourdomain.com applinks:test.yourdomain.com但要注意測試域名的AASA文件也要配好否則測試鏈接拉不起來。4.3 多Target項目的配置要點如果你的項目是一個工程多個Target比如主App和極速版共用一個代碼庫那每個Target都要單獨配置Associated Domains。Xcode里切換Target分別添加。這時候容易出現(xiàn)的問題是某個Target忘了加導(dǎo)致那個App的鏈接拉不起來排查半天才發(fā)現(xiàn)是配置漏了。我的做法是做一個配置檢查清單每次新增App或者改域名時逐項核對[ ] 開發(fā)者后臺該App ID是否開啟Associated Domains[ ] Xcode該Target是否添加applinks:域名[ ] AASA文件是否聲明了該App的appID[ ] AASA文件該App的paths是否覆蓋了目標(biāo)路徑[ ] Provisioning Profile是否包含Associated Domains權(quán)限這五步任何一步漏了鏈接都拉不起來。而且報錯信息往往很模糊不會直接告訴你哪一步錯了所以清單核對是最靠譜的辦法。5. 服務(wù)端AASA文件的部署與驗證5.1 部署位置與服務(wù)器配置AASA文件必須放在https://yourdomain.com/.well-known/apple-app-site-association。注意.well-known是個隱藏目錄很多服務(wù)器默認(rèn)不允許訪問以點開頭的目錄需要單獨配置。以Nginx為例需要確保location /.well-known/apple-app-site-association { default_type application/json; add_header Content-Type application/json; root /var/www/html; }關(guān)鍵點是default_type application/json確保返回的Content-Type正確。有些服務(wù)器配置會把無后綴文件當(dāng)成application/octet-stream返回蘋果的爬蟲就不認(rèn)了。另外要確保這個路徑不被重定向。如果你的站點有全站HTTPS跳轉(zhuǎn)或者www跳轉(zhuǎn)要確保AASA文件的請求不會被跳轉(zhuǎn)。蘋果的爬蟲不跟隨重定向。5.2 驗證AASA文件是否可訪問部署完之后用curl驗證curl -I https://yourdomain.com/.well-known/apple-app-site-association期望看到的是HTTP/2 200和content-type: application/json。如果看到301/302說明有重定向要修。如果看到content-type: text/plain或application/octet-stream說明Content-Type不對也要修。再驗證內(nèi)容curl https://yourdomain.com/.well-known/apple-app-site-association確認(rèn)返回的JSON格式正確沒有語法錯誤??梢杂迷诰€的JSON校驗工具過一遍或者本地用python -m json.tool驗證。5.3 蘋果CDN緩存與刷新AASA文件會被蘋果的CDN緩存。你更新文件后CDN不會立即刷新。蘋果官方?jīng)]有提供主動刷新CDN的接口只能等。通常幾小時內(nèi)會刷新但極端情況下可能要一兩天。在開發(fā)調(diào)試階段這個緩存很讓人頭疼。有幾個應(yīng)對辦法用測試域名每次改配置換個新域名避開緩存。在設(shè)備上刪除App重裝會觸發(fā)重新拉取AASA文件。在設(shè)備設(shè)置里關(guān)閉再開啟開發(fā)者模式下的相關(guān)選項不同iOS版本路徑不同有時能觸發(fā)刷新。實測下來刪除App重裝是最可靠的方式。所以調(diào)試階段我一般會頻繁重裝App來驗證配置。6. App端的鏈接處理與多客戶端分發(fā)邏輯6.1 接收Universal Link的回調(diào)App端接收Universal Link的回調(diào)有兩個// iOS 13及以上SceneDelegate func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { guard userActivity.activityType NSUserActivityTypeBrowsingWeb, let url userActivity.webpageURL else { return } handleUniversalLink(url) } // iOS 13以下AppDelegate func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: escaping ([UIUserActivityRestoring]?) - Void) - Bool { guard userActivity.activityType NSUserActivityTypeBrowsingWeb, let url userActivity.webpageURL else { return false } handleUniversalLink(url) return true }如果你的App同時支持iOS 13以上和以下兩個都要實現(xiàn)。iOS 13以上走SceneDelegate以下走AppDelegate。如果只實現(xiàn)了AppDelegate在iOS 13以上的設(shè)備上可能收不到回調(diào)。6.2 多客戶端的分發(fā)邏輯設(shè)計當(dāng)多個App共用一條鏈接時每個App收到的URL是一樣的。App需要自己解析URL判斷這個鏈接是不是給自己的以及要跳轉(zhuǎn)到哪個頁面。我的做法是在URL里帶足夠的參數(shù)讓App能自主判斷https://yourdomain.com/share/activity?channelwechattargetdetailid12345clientmainApp收到后解析client參數(shù)如果和自己的身份匹配就處理不匹配就忽略理論上不會發(fā)生因為系統(tǒng)已經(jīng)按AASA匹配過了但作為兜底邏輯保留。然后根據(jù)target和id參數(shù)路由到對應(yīng)的頁面。這套邏輯建議封裝成一個統(tǒng)一的路由模塊所有App共用同一套解析代碼避免各端邏輯不一致。6.3 冷啟動和熱啟動的處理差異Universal Link在App冷啟動和熱啟動時的回調(diào)時機不一樣這是個大坑。冷啟動時App還沒起來系統(tǒng)會先啟動App然后在didFinishLaunchingWithOptions之后調(diào)用continueUserActivity。這時候如果你的首頁初始化邏輯比較重可能會在回調(diào)到達(dá)之前就渲染了首頁導(dǎo)致用戶看到首頁閃一下才跳到目標(biāo)頁。熱啟動時App已經(jīng)在后臺系統(tǒng)直接調(diào)用continueUserActivity這時候處理起來相對簡單。我的處理方式是在App啟動時先判斷是不是通過Universal Link啟動的如果是就先不渲染首頁等回調(diào)到了再決定跳哪里。具體做法是在didFinishLaunchingWithOptions里檢查launchOptions[.userActivityDictionary]如果有值說明是Universal Link啟動設(shè)置一個標(biāo)志位首頁初始化時根據(jù)標(biāo)志位決定是否延遲渲染。這個細(xì)節(jié)不做的話用戶體驗會很差——點個鏈接App打開先閃一下首頁再跳到目標(biāo)頁感覺像卡了一下。7. 常見問題排查與避坑經(jīng)驗實錄7.1 鏈接拉不起來的分層排查法Universal Link拉不起來是最常見的問題排查起來要有章法。我總結(jié)了一個從外到內(nèi)的排查順序排查層級檢查項常見問題第一層AASA文件能否HTTPS訪問、Content-Type、JSON格式重定向、Content-Type錯誤、JSON語法錯第二層appID匹配TeamID和BundleID是否正確TeamID寫錯、BundleID大小寫不一致第三層路徑匹配paths是否覆蓋目標(biāo)路徑路徑大小寫、通配符位置錯誤第四層App配置Associated Domains是否開啟開發(fā)者后臺沒開、Xcode沒配第五層系統(tǒng)緩存AASA是否被緩存改了沒生效需重裝App按這個順序逐層排查基本能定位到問題。我遇到過最坑的一次是TeamID寫錯了一位排查了兩天才發(fā)現(xiàn)因為報錯信息完全不提示這個。7.2 路徑匹配的常見陷阱路徑匹配有幾個容易踩的坑大小寫敏感/Share/*和/share/*不匹配。URL路徑是區(qū)分大小寫的AASA里的paths也要嚴(yán)格對應(yīng)。通配符位置/share/*能匹配/share/abc和/share/abc/def但/share*會匹配/shareabc語義不同。要明確你的意圖。末尾斜杠/share/*不匹配/share沒有斜杠如果需要匹配要單獨加一條/share。查詢參數(shù)paths不匹配查詢參數(shù)/share/*能匹配/share/abc?x1因為查詢參數(shù)不參與路徑匹配。但如果用components可以用?字段匹配查詢參數(shù)。7.3 多App場景下的優(yōu)先級問題前面提到過多個App聲明同一路徑時系統(tǒng)拉起哪個App是不確定的。我實測過幾次結(jié)論是如果只有一個App安裝了那毫無疑問拉起它。如果多個App都安裝了通常拉起AASA文件里排在前面的那個但這個順序在不同iOS版本上表現(xiàn)不一致。如果AASA文件里App順序變了拉起結(jié)果也可能變。所以如果你的業(yè)務(wù)強依賴必須拉起某個特定App就不要讓路徑重疊。正確做法是給不同App分配不同路徑或者用URL參數(shù)在App內(nèi)部做二次判斷。7.4 調(diào)試工具與日志技巧調(diào)試Universal Link時有幾個實用技巧用蘋果自帶的swcutil工具在設(shè)備上通過特定方式調(diào)用可以查看系統(tǒng)緩存的AASA文件內(nèi)容確認(rèn)系統(tǒng)拉到的是不是你最新的配置。在App里打日志把收到的URL完整打印出來確認(rèn)回調(diào)有沒有觸發(fā)、URL是什么。用Safari的開發(fā)者工具連接設(shè)備可以看網(wǎng)絡(luò)請求確認(rèn)AASA文件有沒有被拉取。如果條件允許用真機調(diào)試模擬器對Universal Link的支持不完整很多問題在模擬器上復(fù)現(xiàn)不了。我個人最常用的是在continueUserActivity回調(diào)里打日志配合刪除App重裝基本能覆蓋大部分調(diào)試場景。8. 多客戶端共用的進階優(yōu)化與擴展思路8.1 用中間頁做統(tǒng)一入口如果你的App數(shù)量多、路徑規(guī)則復(fù)雜可以考慮加一個中間頁做統(tǒng)一入口。所有鏈接先指向一個H5中間頁中間頁根據(jù)User-Agent、URL參數(shù)等判斷該跳哪個App然后用Universal Link或者URL Scheme拉起。這樣做的好處是AASA文件只需要聲明中間頁的路徑各App的路徑規(guī)則可以簡化中間頁可以做更靈活的兜底邏輯比如沒裝App就引導(dǎo)下載。壞處是多了一次跳轉(zhuǎn)體驗上略慢而且中間頁本身要處理各種邊界情況。8.2 動態(tài)AASA文件的實現(xiàn)如果你的App列表經(jīng)常變或者需要按地區(qū)、按渠道返回不同的AASA文件可以做一個動態(tài)的AASA接口。服務(wù)器根據(jù)請求的來源比如User-Agent、IP地區(qū)動態(tài)生成AASA內(nèi)容返回。但要注意蘋果的爬蟲拉取AASA文件時請求頭里不一定帶足夠的信息讓你區(qū)分。而且CDN緩存會讓動態(tài)邏輯失效。所以動態(tài)AASA適合做灰度或者A/B測試不適合做核心的匹配邏輯。8.3 與URL Scheme的配合使用Universal Link雖然體驗好但有個限制只能通過用戶點擊觸發(fā)不能在App內(nèi)部用代碼直接打開另一個App。如果你的場景需要在App內(nèi)跳轉(zhuǎn)到另一個App還是得用URL Scheme。我的建議是兩者配合對外分享的鏈接用Universal Link保證點擊體驗App內(nèi)部跳轉(zhuǎn)用URL Scheme保證可控性。兩套機制共用同一套路由解析邏輯避免維護兩份代碼。9. 我踩過的幾個真實大坑第一個坑是AASA文件的Content-Type。我一開始用對象存儲托管AASA文件對象存儲默認(rèn)給無后綴文件返回application/octet-stream蘋果爬蟲不認(rèn)鏈接死活拉不起來。后來改成用Nginx托管顯式設(shè)置Content-Type才解決。這個坑排查了很久因為從瀏覽器訪問文件內(nèi)容是正常的只有Content-Type不對。第二個坑是TeamID和BundleID的匹配。我們有個App是從別的團隊遷移過來的TeamID變了但AASA文件里還寫著舊的TeamID導(dǎo)致這個App的鏈接一直拉不起來。后來把AASA文件里的appID全部核對了一遍才發(fā)現(xiàn)。第三個坑是路徑大小寫。我們的分享鏈接路徑是/Share/xxx首字母大寫但AASA文件里寫的是/share/*小寫結(jié)果就是拉不起來。URL路徑是區(qū)分大小寫的這個細(xì)節(jié)很容易忽略。第四個坑是冷啟動閃首頁。前面提到過冷啟動時App先渲染首頁再跳轉(zhuǎn)用戶看到閃一下。后來在啟動邏輯里加了判斷如果是Universal Link啟動就延遲渲染首頁才解決。這幾個坑的共同點是報錯信息都不明確只能靠經(jīng)驗和系統(tǒng)排查。所以我把排查清單和驗證步驟都固化下來每次配置新App或者改域名時逐項核對能省很多時間。10. 一套可直接復(fù)用的配置模板最后給一套我實際在用的配置模板多App共用一條鏈接的場景可以直接參考。AASA文件模板{ applinks: { apps: [], details: [ { appID: TEAMID1.com.example.app.main, paths: [/share/*, /promo/*, /home/*], components: [ { /: /share/* }, { /: /promo/* }, { /: /home/* } ] }, { appID: TEAMID1.com.example.app.lite, paths: [/share/*, /promo/*], components: [ { /: /share/* }, { /: /promo/* } ] }, { appID: TEAMID2.com.example.app.merchant, paths: [/merchant/*], components: [ { /: /merchant/* } ] } ] } }Xcode Associated Domains配置applinks:yourdomain.comApp端路由處理的核心邏輯func handleUniversalLink(_ url: URL) { guard let components URLComponents(url: url, resolvingAgainstBaseURL: false) else { return } let path components.path let queryItems components.queryItems ?? [] let params Dictionary(uniqueKeysWithValues: queryItems.map { ($0.name, $0.value ?? ) }) // 根據(jù)path分發(fā)到不同模塊 if path.hasPrefix(/share/) { routeToShare(params) } else if path.hasPrefix(/promo/) { routeToPromo(params) } else if path.hasPrefix(/merchant/) { routeToMerchant(params) } else { routeToHome() } }這套模板覆蓋了多App聲明、路徑分配、App端分發(fā)三個核心環(huán)節(jié)改改域名和BundleID就能用。實際項目里我還會加一層參數(shù)校驗和異常兜底確保任何異常URL都不會導(dǎo)致App崩潰。配置Universal Link這件事說到底就是細(xì)心加耐心。原理不復(fù)雜但細(xì)節(jié)多任何一個小地方出錯都會導(dǎo)致整個鏈路失效。把AASA文件、開發(fā)者后臺、Xcode、App端這四塊都配對了再配合分層排查法基本就沒有搞不定的場景。多客戶端共用一條鏈接的需求本質(zhì)上就是把這四塊配置乘以App的數(shù)量然后確保路徑規(guī)則不沖突。想清楚這一點剩下的就是按清單逐項落實了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久精品国产72国产精品福利| 久久亚洲AV无码白度| 国内三级自拍小视频在线观看| 麻豆成人影音在线| 啊啊啊啊啊好舒服视频| 国产精品视频播放| 欧美成人精品A片免费一区99| 亚洲免费成人在线高清无码视频 | 欧美亚洲特P| 日韩精品系列| 亚州色图欧美| 狠综合网| 国产久久久久久| 色九九九九| 一区二区日韩欧美久久| WWW黄片COM| 国产性爱在线视频一区二区| 色爱三区| 成人av动漫在线观看| 欧洲欧美视频一区二区| 北约熟女超碰| 超碰色男人操熟女| 先锋激情∨在线视频播放| 国产精品96久久久久久| 色色97爱| 最新AV在线| 亚洲色图8| 国产精品69久久久久久久| 欧美 综合| 欧美男人一区| 天天操狠狠日夜夜干超碰撸com视频在线观看| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 97精品国产97久久久久久| 中文字幕在线高清男人的天堂| 欧美,日韩综合久久| 日韩日本欧美在线观看| 久操操AV电影| 久久久久免费看少妇A片特黄| 国产精品第一区第一页| 婷婷精品视频| 天天做天天爱天天爽| 黄色一级视| 狠狠色综合网| 亚洲男人天堂2019| 人妻在线中出视频| 97 国产一区| 性老妇一区二区三区| 和协无码影院| 超碰久久.com| 九七超碰| 久久久久久亚洲中文| 久操网址| 国产一区二区三区精品观看啪| 久久香蕉国产线看观看猫咪av| 亚洲精品无码少妇久久| 狠狠操天天干| 久久九九一区二区三区成人| 亚洲色香| 欧美激情 亚洲色图| 97超碰超碰| 99re热有精品视频国产| 亚州欧美总和| 久久久成人免费av电影| 亚洲色综合| 亚洲AV秘无码一区..| 两性色网| 欧美性爱97超碰| 欧美在线中M| 亚洲色电影在线| 老熟女乱伦片| 色婷婷网| 久久超碰大香蕉| 欧美草草| 国产精品久久天天干| 亚洲成熟国产精品美女| 精品视频日日夜夜| 中文有码9| 精品国产Av无码久久久伦古装| 免费啪啪av| 国产乱伦性爱AV| AND人妻系列| 亚洲凸凹超碰成人| 91天堂色男人的天堂| 大香蕉碰碰| 欧美白嫩在线放| 亚洲男人天堂网站| 果冻国产精品麻豆成人av| 国内91熟女人妻丝袜天天精品视频在线 | 欧美亚性天堂| 天天爱综合网| 欧美亚洲尤物久久| 在线天堂999| 99热线麻豆| 波多野结衣AV无码一区| 精品然女一区二区| 操国产高清| 户外裸露刺激视频第一区| 日韩精品人妻系列无码天堂| 亚洲色91| 国产少妇与亚洲av| 亚洲三级。日韩三级| 粉嫩不卡一区二区性爱 | 综合久久久久久久久91| 99无码精品| 天天日熟妇| 黄片com.| 玖玖爱伊人玖玖爱| 国产操逼逼网| 日本高清一本二本免费不卡| 久草国产在线视频| 久久国产999| 中日韩熟女| 五十路熟女工口 | 久久精品国产72国产精品福利| 五十路熟女人妻一区二区在线观看| 国产欧美精选自拍一区| 九九久久国产精品| 久久久亚洲Av| 校园春色美腿丝袜| 91丝袜美女| 97手机日韩| 中文字幕在线观看视频www| 少妇特黄一区二区三区| 亚洲国产高清福利视频| 91综合天天看| 亚 欧 美 综合| 欧美日韩色| 一区二区三区四区色图| 欧美成人A√在线一区二区| 狠狠图片青青草| 国产成年女人免费视频播放a| 国产精品在线网站| 丁香六月啪| 快灬快灬 一下爽蜜桃在线观看| 婷婷激情五月| 日本一级特级毛片视频| 爱爱动态试试看6 0秒| 奇米四色网| 在线观看A啊啊啊| 日本高清视频xxxx| 97在线观看免费| 色五月综合| 男人天堂新在线| 亚洲情色第一页| 国产精品白领在线观看| 操淫穴亚洲五月丁香| 日本精品无码三级网站| 亚洲图片欧美偷拍| 精品国产国产AV| 性爱av网站| 99人妻| 大香蕉伊人在线成人AV在线观看| 日韩一级欧美一级在线观看| 欧美18老人禁| 在线播放欧洲免费av| 日本亚洲vr欧美不卡高清专区| 欧美大波激情xxxx| 97色欧洲| 欧美情色男人的天堂| 69精品久久久久中文字幕| 97色色色| av天堂电影网| 中文字幕人乱码中文字的预防方法 | 激情综合亚洲| 中文字幕乱在线伦视频中文字幕乱码在线| 乱色老一区二区三区的观看方式| 91婷婷伊人狠人| 中国AV美女| 变态乱伦伪娘灌肠一区二区| 国产嫩草精品A88AV| 97精彩视频网站| 无码av永久免费专区网站| 97视频在线看| 91亚洲最新在线| 丰满搜索结果 -第18页- 久久高清无码| 久久国产热视频97电影| 一区操逼| 国产精品直播在线观看直播| 亚洲中文字幕av | 熟妇高潮二区三区| 色超碰综合| 日韩三级网址| 色噜噜狠狠色综无码久久合欧美| 久久亚洲AV成人精品无码| 亚洲自拍97| 日韩精品一区,二区 九九...老司机| 亚洲色鬼| Julia在线播放亚洲久久| 啪啪资源网| 精品人妻中文字幕4399| 一级久久久久久久久久久| 国产二区视频在线观看电影| 在线亚洲欧美| 精品欧美А∨无码黑人大荫蒂| 一本色道综合久久欧美日韩精品| 女人天堂网| 在线观看午夜婷婷久久久久清性观看| 欧美97日韩| 中文字幕第页| 长长久久曰曰夜夜成人网| 麻豆这里只有精品| 精品久久人妻成人网| 日韩人妻中文视频| 高清在线偷拍自拍视频| 五月丁香六月| 东北黄色电影| 人妻天天爽夜夜爽精品2| 盗摄 精品 另类 一区| 噜噜在线| 欧美亚洲玖玖玖| 欧洲无码一区二区| 欧美精品91| 我中文字幕6区| 美女AV一区二区| 亚洲91网。| 1二区9| 加勒比AV天堂| 九色 蝌蚪 熟女自 | 岛国片国产成人亚洲播放| 亭亭丁香激情| 中文字幕精品久久久久人妻红杏ⅰ| 色婷婷成人综合| 蜜桃一区二区三区| 日本天堂在线播放| 天天噜| 乱论91| 99性爱在线观看| 99日视频在线免费| 精精品人妻一区二区三区| 日日骚av| 肏逼视频日本| 变态乱伦伪娘灌肠一区二区| 欧美午夜一区二区三区| 蜜桃久久一区二区三区| 精品人妻视频一区二区三区蜜桃视频| 性交一区二区在线播放| av橘色网站| 一区二区影视| 天天躁日日躁成人字幕aⅴ| 日韩一级成人毛片免费观看| 日韩欧美女优电影| 美日韩在线不卡人妻| 亚洲天堂资源| 97爱| 国产欧美亚洲精品a第2页| 婷婷丁香六月天| 少妇三P| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 日韩中文字幕二区| 偷拍色图| 日本精品一级二级三级| 国产AV高清AV无码| 成人A片男人的天堂| 亚洲大色鬼| 五月丁香六月综合缴清无码| 色婷婷丁香五月| 91久久久老司机| 狠狠超| 欧美日韩激情无码专区| 97舔舔| 超碰视97中文| 最新日日夜夜天天干干| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 九九久久国产精品| 欧美天堂在线| 丁香久久| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 无码人妻丰满熟妇区毛片| 婷婷婷婷婷婷久久久久| 日韩黄色成人性爱| 日韩电影天堂视频二区三区| 日本成熟少妇A∨网站| 久久东京国产精品视频| 91美女片在线| 激情综合五月| 熟女人妻一区二区三区免费看| 一区二区三区免费岛国片| 欧美久久婷| 日韩欧美女求操每天更新| 国产精品无套内谢| 国产乱弄免费在线视频。| 一区二区三区高清 | 久久久极品| 黄色一级视| 欧美性生活内射| 日本国产亚洲一区在线观看| 久久精品欧美一区蜜桃| 好爽视频在线观看| 色婷婷影院| 欧美熟妇精品黑人巨大91| 2020国产精品| 91欧美情色| 亚洲日本韩国在线| 少妇三p| 久99视频| 久久久久久久久999| 人妻天堂综合网| 精品69网| 久久夜夜夜夜| 日本操逼视频导航| 欧美亚洲高清晰| 精品亚洲国产成人AV制服丝袜 | 激情小说成人日本无码一| 偷拍片久久| 国产强奸超碰AV| 青青草国产一区二区三区| 美中日韩无码| 啊啊啊啊啊啊在线| 少妇同性| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 中国一级操逼视频| 校园春色欧美| 69超碰综合| 久久精品| 亚洲熟女乱综合一区二区三区| 91动漫操逼视频| 新怡红院| 熟女天天干| 男人a天堂手机在线版| 欧美亚洲韩国视频十五区| 免费一级欧美片片线观看| 亚洲天天操| 校园春色欧美色图| 色色色欧美| 哈哈操电影| 抽查国产福利主播| 久久99人妖视频国产| 久久岛国| 神马久久69| 国产美女激情| 丰满欧美少妇| 国产一区二区精品久久99| 91熟女丨老女人| 久久久久七视频| 色色色色电影网| 在线视频 亚洲精品| 日韩97视频| 欧美日日夜夜| 首页亚洲国产高跟丝袜诱惑视频| 近亲乱伦一区二区| 新亚洲无码| 91N综合网在线| 电影69乱码96| 在线国产探花| 人人操人人干网页| 亚洲九九九| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 伊人国产视频| 色好看av| 蜜臀精品1区2区| 久热伊人| 在线v中文字幕一区二区三区| 亚洲图片欧美| 久久久女人| 亚洲日韩久久精品一区| 中文字幕在线观看AV| 91丨九色丨国产打屁股| 另类小色呦| 久久精品 六十路 熟女 欧美| 久久99久久99精品天美传媒棢·纸:.| 91殴美大片| 色99在线| 夜夜操狠狠操| 激情综合五月丁香| 精品久久人妻成人网| 国产精品干干干| 另类亚洲一区二区三区| 性色AV蜜色av色欲av| 精品一级| 国产白丝网站| 色婷婷日韩精品一区二区三区| 91夜夜蜜桃臀1区2区3区| 天天综合精品| 五月天啪啪| 日本肉体xxxx裸交| 999岛国大片| 五月综合婷婷久久网站| 日韩欧美国产高清视频| 牛牛aV| 国产精品宅男免费| 国产亲戚伦亲在线| 一本一道vs波多野结衣| 亚洲强奸乱伦影视网| 欧美大香蕉同搞| 免费精品人妻一区二区三| 国产精品蜜臀久久久久无码AV| 操屄日韩| 制度丝袜99| 国产高清无码一区三区二区| 午夜精品五区| 日本色色色| 精品国产一区二区三区av在线资源| 狠狠干妹子| 欧美草草| 久久青青草在线视频| 凹凸精品熟女在线观看| 中文字幕精品免费一区二区| 欧 美 自 拍 偷 拍| 韩日性爱av| 91强热人妻| 人人扣人人操| 欧美中文字幕男人天堂久久精品 | 极品肉射| 粉嫩粉嫩一区性色AV片| 国产久久久久久久久一区二区 | www.久久超碰| 久久久精品网站| 免费αV在线视频| 99国产在线 精品 视频| www五月| 久久久影院| 久久爽爽精品| 亚洲欧美不卡线| 国产亚洲性生活视频播放| 中日韩久久久| 国产精品熟女AV中文字幕在线播放| 精品999日本| 人妻蜜桃臀| 97超碰磁| 日本一级一级一级一级| 另类 综合 日韩 欧美 亚洲| 国产精品不卡少妇白| 日韩欧美大力操| 日韩在线观看中文字幕视频| 久久精品国产99国产精品亚洲| 97jingpin| 黄片www视频免费| 午夜一区二区三区国产| 欧美制服网站美腿丝袜| 四虎免费视频| 欧美日产国产在线成人第一区| 国产久久久久久久久一区二区 | 人人妻人人爽 97人人看碰人免费公开视频| 亚洲九月丁香| 美女91在线观看| 97综合激情| 综合欧美激情网| 综合国产97| 亚春色色| 国产日韩欧美三级片| 黄呦呦在线| 超清中文乱码字幕| 91色婷婷综合久久中文字幕二区| a人片中文字幕一区二区| 国产农村妇女精品| 一本道综合色图| 超碰是碰在线观看| 女同女同恋久久级三级| 91在线限制级| 91肉片| 95精品在线| 国产精品日日摸天天碰| 操屄不卡视频| 欧美九一精品久久久熟妇| 人人做天天爱| 精品久久久不卡一区二区| 91AV入口| 中文字幕88av在线| 欧美gv在线观看| 亚洲一区二区麻豆影院| 精品人妻av区天天看片| 天天影视综合网欧美精品| 少妇熟女一区二区三区| 欧美偷偷网| 浪人综合网| 午夜精品人妻二区三区| 欧美日韩性爱无码| 国产91专区| 亚洲国产麻豆一区二区三区| 啊啊啊啊好大好硬啊啊啊啊啊| 欧美一级黄片视频在线| 激情婷婷丁香| 欧美十八禁在线看| 亚洲男人天堂网站| 花野真衣| 天天激情综合站| 亚洲精品美女操逼| 黄色小视频日本txt| 日韩 欧美 国产 麻豆| 久久直播国产| 精品丰满熟妇人妻一区| 黑丝少妇| 日韩无码a片| 蜜臀久久99'精品久久久| 黄片免费看黄片免费看| 中文字幕视频二区| 91色五月俺来也| 国产人妖的免费的视频| 美女t无毒不卡不卡| 中文字幕黑人大片| 日韩黄色片子| 亚洲熟妇AV日韩熟妇在线| 色狠狠综合| 日日夜夜精品视频| 国产噜噜噜噜噜久久久久久久久| 国语精品内射在线观看| 97网色| 欧美亚洲影视| 最新国产亚洲精品精品国产亚洲综合| 蜜臀久久99精品久久久久久-DVD| 高树玛利亚无码流出| 国产宅男宅女在线观看| 96久久久久久久| 欧美白嫩在线放| 国产精品自产拍在线观看社区| 亚洲欧美首页| 99只有精品| 99热这里是精品| 一级AV性爱| 91精品在线播放| 91 手机在线播放 绯色| 大香网站| 尤物av网站免费在线播放| 蜜桃一区二区三区| 刺激性视频黄页| 欧美日韩国内不卡| 欧美激情性久久久久久| 人妻熟女一区二区在线视频| 久草综合视频| 亚洲天堂另类小说男人| 操一区| 国产av强奸美女| 91亚洲在线| 夜夜国自区| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 亚洲国产成人精品久久久国产成人一区二区三.| 久久久亚洲精品中文字幕人妻| 啊啊啊啊二区好大| 国产极品999| 久久五月丁香| 国产成人免费观看在线视频| 级做a爱无码性色永久免费| 欧日韩一二三f区| 青青伊人加勒比海| 欧美熟女妇同| 丝袜综合| 内射黑人| 性色高清在线| 欧美中文字幕男人天堂久久精品 | 翘臀vidoes| 丁香五月色| 免费中文在线| 另类 日韩 熟女| AV不卡在线| 亚洲成人性爱网站在线播放| 欧美中文字幕日韩在线| 日韩精品中文字幕人妻| 绯色一区二区三区不卡少妇 | 国产成人精品日本亚洲语言| 亚洲欧综合另类无码一区| heyZO天然素人无码AⅤ专区| 18禁在线视频| 欧美亚洲素人制服精品| 综合伊人激情| 美国精品国产精品| 精品一区二区成人| 青娱乐国产精品| 亚洲AV操| 国产成人精品亚洲日本| 久热大香蕉| 日韩成人网址| 大香樵伊人网| 精品免费一区二区三区在线亚洲人成| 日本淫色网| 九九英色视频| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 久热色情精品| 欧美色图片91| 热热热热日日漂亮永久永久国产日| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 亚洲高清少妇| 青青草原香蕉日本Ap| 搡老女人老熟女91老熟女综合网| 啊啊啊想要| 日韩av电影成人在线| 国产精品美女在线一区| 欧美亚洲中文字幕| 91人妻爽爽人人做人人澡| 亚洲色图在线视频| 免费网色网站| 精品女同一区二区三区| 女人天堂av在线播放| 男女做爰猛烈动高潮A片免费应用| 久久欲| 国产精品久久久久综合| 日本精品一区三区| 伊人991| 大白逼三四级| A级在线视频| 精品亚洲黄色片 国产精品导航一区二区 | 人妻久热在线| 夜夜免费视频| 少妇综合网| 久久久久久久国产视频| 夜夜嗨一区二区| 夜夜骑操视频| 亚洲操操操| 91网亚洲| 人人妻人人爽一区二区三区| 人人看人人插| 先锋精品av色鲁| 韩日巨乳美女免费视频在线观看| 午夜一区| 99久久e免费热视| 97视频观看| 四虎免费在线播放| 天天谢天天干| 69精品少妇一区二区三区蜜桃| 97视频www| 美女久久久| 亚洲天堂 视频你懂的| 欧洲乱码一区二区| 蜜臀网 一区| 国岛片视频| 国产欧美日韩臀| 亚洲天堂资源网| 干婷婷综合网| 嗯嗯啊啊好大好爽| 亚洲成aⅴ人片不卡无码| 99色在线| 久久成人东京热人妻| 高清国产性猛交xxxx乱大交| 久久久9视频| 夜夜欢天天干| 狠狠干综合| 熟女一区二区三区四区| 999亚洲国产视频| 亚洲一区二区三区麻豆传媒| 一区二区三| 99热亚洲| 麻豆91熟妇人妻中文字幕茄子| 中文字幕狠狠玩| 偷拍综合亚洲| 成人 日本A片无码8888| 九九自拍伦理| 91精品国产日韩欧美综合| 青青草在线视频人人想人人上| 超碰97 线线 在现| 天天流夜夜操| 亚洲开心网| 亚洲色偷偷色噜噜狠狠99网| 美欧色综合| 九九热精品| 啊啊啊啊啊啊在线| 夜夜操2028| 五月丁香激情四射| 国产精品久久久久久夜夜夜| 国产精品999aaa| 2025亚洲男人天堂| 日韩中文字幕国产| 色男人色天堂东京热| www..com操老师| 中文字幕第23区| 一个人免费HD91视频| 伊人嫩草| 天天干美少妇一区| 超碰成人人人爽人人爽| 亚射在线| 中文字幕中文字幕一区二区| 夜夜做夜夜爽精品视频| 97在线视频观看| 精品福利| 久久久久网站-538在线视频-欧美永久乱码 | 精久久久| 久久久久免费少妇| 日韩国产精品人妻无码久久久| 国产白嫩精品久久| 一类无码操逼视频| 精品在线78| 嗯嗯,啊啊,国产精品| 九九九九九九成人| 国产欧美日产一区二区三区 - 国产欧美日 | 国模私拍一区二区三区神乳| 男人天堂日日夜夜| 91黑丝美女| 国产精品69人妻无码久久久| 人妻少妇精品无码专区二区密桃| 污啪啪啪视频| 啪啪啪东京| 九九九九一区| 久久超碰、| 亚洲欧美国产其他二区| 女人久久久| 久久草视频污视频| 调教熟妇 久久久久久| 97超碰磁| 一本大道久| 天美国产精品| 国产激情av女片自拍| 九九久久久| 欲香欲色天天天综合和网| 2020国产精品| 最新国内自拍av免费| 天天性射网| 久草资源欧美在线视频| 婷婷五月天色色| A级毛片在线看免费| 深夜激情| 小骚逼被操的爽不爽| 25国产精品免费观看| 亚欧成人综合影院| 亚洲欧美首页| 情色图区| 色在线69堂| 亚洲色图 欧美热图 清纯唯美 另类自拍| 全免费a敌肛交毛片免费| 欧美亚洲中文| 日日夜夜骑| 日韩97视频| 国产夜夜操| 五月丁香影院| 色综合尤物| 亚洲成人无码影院| 91伊人久| 大JI巴好深好爽又大又粗视频| 99re99在线视频| 老熟女中文字幕高清| 亚洲熟妇熟在线电影视频| 天天日天天色| 九九RE视频在线精品| 亚洲最大成人a毛毛片| 日韩强奸av| 大香蕉一级黄色片久久| 一本色道人妻久久| 中文字幕欧美精品亚洲日韩蜜臀| 激情人妻另类| 狠狠色一区二区中文字幕| 亚洲日韩av一区二区三区百合| 超碰av人人人| 色综合五月天| 欧美性爱五月天| 六月丁香啪啪| 色播五月丁香| 精品一区二区三区蜜桃臀赵总 | 91人妻久久久久久久久久久久久| 99亚洲人人| 国内操逼视频二区| 天天看特黄的免费网站| 狠狠操一区二区| 曰本熟女视频| 亚洲情色一区二区三区| 欧美少妇性乱| 欧洲亚洲天堂精品| 欧洲亚洲人人爽爽视频| 九九人妻| 久久久啊啊啊| 精品午夜福利| 国产无码久久高清| 久久久久久久久久久免费精品| 女欧美一区二三区| 无码人妻精品一区二区中文| 久草国产在线视频| 99热只有这里有精品| 成人AV在线电影| 亚洲男人天堂2019| 高清不卡一二三区视频......| 97国产精品国| 大香蕉欧美日韩| 色眯眯av| AV女资源| 国产黄色剧情影片麻豆免费播放| 中文字幕高清精品一区| 亚洲少妇综合在线播放| 日本顶级天天操狠狠操夜夜操中文字幕| 亚洲熟久久| 久久久一区二区三区麻豆| 久久 精品| 欧美日韩国产另类综合| 国产精品免费美女视频| 亚洲五月丁香花狠狠干一区二区三区 | 99啪啪| 久久久久久免费电影| 人人妻人人爽| 国产精品人人爽人人做可爱福利| 亚洲制服欧美另类内射| 97超碰国产亚洲精品资源| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 亚洲 91 在线| 老鸭窝黄色视频网站| 密臀在线视频| 亚洲 小说 欧美 激情 另类| 五月丁香社区婷婷日韩欧美精品影院 | 妺妺跟我一起洗澡没忍住| 日韩亚洲美女一区久久| 色综合超碰超| 国产9区| 操我无码| 在线综合 亚洲 欧美中文字幕| 最新9久久久9免费视频| 天天色图| 999国产精品999| 91视频成人福利网站在线一区| 一本大道久| 欧美aa一级片| 亚洲另类综合欧美| 操逼短片| 可以免费看黄片的视频| 可以看的av| 亚欧美综合网。| 国产一国产一级毛片古装| 日本五十路熟女一区二区| 亚洲色欲一区二区三区| 97色欧洲| 色婷婷激一区二区三区 | 无码动漫av中文字幕| www狠狠| 人妻内射一区二区在线视频| 国产偷人伦激情在线观看| 欧美做爰无码A片视频| 伦在线97| 黄色大片免费在线| 国产青一二三| 久久综合97| 国产女人成人精品视频| 欧美激情色婷婷花野真衣一区二区| 超碰91在线| 99热在线播放| 东北老熟女| 国产日韩在线播放| 性欧美精| 国产精品免费日韩| 国产精品suv一区| 国产成人超碰在线| 中文字幕一区二区三区蜜臀| 国产精品网址| 激情五月天网| 夜夜夜夜久久久久| 亚洲日本韩国在线| 一本大道久| 99久在线精品99re8| 热G综合热G中文| 精品性爱无码在线播放| 国产AV线| 国产成人精品亚洲日本| 色天天野狼综合社区| 天天草天天干天天日| 婷婷久草| 亚洲午夜福利视频| 青女偷拍网| 久久人人看| 精品久久97观看在线视频| 99热啪啪| 少妇久久久久久| 天天看天天综合成人网| 人妻少妇久久中文字幕一区二区 麻豆 | 久久婷婷在线观看视频| 操b在线观看| 国产精品久久久久久久久久久久久久久久久久 | 性爱av网站| 怡红院久久老司机| 久久人妻丝袜一区二区三| 亚洲丝袜综合| 亚洲色图加勒比| 欧美性爱第一区| 亚洲怡春院| 丁香六月婷婷久久综合| 五月婷婷激情| 青青久久艹| 亚洲色欲一区二区三区| 国产日韩在线播放av| 中文字幕一区二区三区蜜桃视频| 色香色欲天天综合网天天来吧 | 人人手机欧洲亚洲国产人妻| 亚洲精品尤物yw在线影院| 日本不卡一区二区三区| 婷婷五月天成人网| 国内偷拍精品一区二区| 久久大陆| 丁香激情网| 亚洲日本激情| 99在线精品观看视频中文 | 凹凸精品熟女在线观看| 精品人妻一区二区乱码一区二区| 综合欧美日韩在线观看| 91老熟女视频| 欧美激情久久久久| 嗯嗯啊啊视频在线看| 婷婷在线视频在线观看| 一级免费精品| 国产日韩精品一区二区三区| 九月丁香综合网| 精…码一二三区| 国产精品久久久九九九| julia高潮后不停追击中出| 欧美Aⅴ| 97亚洲综合在线| 中文字幕版| 看一级黄色视频| 国产91av在线播放| 亚洲欧美综合图片| 久久亚洲人妻| 成人综合色网| 3p国产色噜噜一区| 成人无遮挡毛片免费看| 大逼色网站| 人妻内射一区二区在线视频| 婷婷色一区| 色官网在线| 国产成人精品必看| 亚洲影视综合| 欧美另类天堂| 亚洲熟久久| 欧美天堂日韩三级国产传媒| 热久久这里只有精品| 口爆吞精在线观看| 日韩偷拍一区二区三区| 欧美97色| 加勒比无码毛片| 自拍亚洲综合| 十八禁黄色成人网站观看| av中文字幕在线熟女| 日韩精品一区的| yellow网站免费观看日韩高清无码| 亚洲牲交| 亚洲在饯| 啊啊啊啊免费视频| 久超碰这里只有精品| 国产一区二区三区,在线观看观看 五月开心久久AV官网 | 97欧美精品综合| 中文字幕啊啊啊在线观看视频| 99热在线观看| 91成人久久| 在线免费观看日韩一区| 国产不良强奸视频免费看| 久久老女人| 91丨人妻丨国产丨丝袜| 欧美 亚洲精品首页| 色噜噜日韩精品| 激情文学亚洲| 四虎免费在线播放| 90后后入| 一卡二卡三卡| 日本黄色精品| 国产欧美另类久久久精品课程| 精品十八在线观看| 日韩成人小视频| 久久午夜神马| 午夜在线播放| 久久精品熟妇丰满人妻99| www.男人的天堂| 精品人妻一区二区三区在线视频不卡| 97天天| 啊啊啊啊啊啊在线观看| 少妇久久久久久| 亚洲AV无码秘 蜜桃臀国精产品| 婷婷超| 亚洲av国产av综合av卡| 久久男人精品| 99热只有这里有精品| www.色婷婷色综合| 熟妇熟女视频一区二区三区| 91 手机在线播放 绯色| 第二页中文字幕| 亚洲和欧美裸体美女双飞视频| 久久久男人的天堂| 婷婷探花久久精品一区| 天天久久| 三男一女不戴套的A片| 99这里只有精品国产| 福利在线观看一区二区| 国产一级片| 欧美美女啪啪视频| 东京热av男人的天堂| 国产后入清纯| 97免费在线观看| www.久久制服糖| 一级啊性爱在线视频| 桃色五月天| 久久仑合| 天美传媒精品久久视频| 久久9久| 国产高清26uuu| 大香蕉九九| 天天香香欲综合| 另类欧美| 欧美一区二区三区不卡高清视频| 日韩精品碰碰| 天天弄天天操| 精品96久久| 91精品人妻一品二品三品| 男插女青青影院| 亚洲第一成人影院色播| 日本一二区免费| 天天干夜夜肏| 凹凸视频在线一区二区| 亚洲情色中文字幕一区| 性色avv| 少妇特黄一区二区三区| 日本影视久久免费| 亚洲综合中文字幕有码| 亚洲国产综合久久久性感熟妇| 亚欧洲一区二区视频| 亚洲成a人v欧美综合天堂下载| 伊人网综合在线视频| 97超碰伊人| 久久成年片色大黄全免费网站| 国产精品久久99日日| 91久久精品国产| 久久久久久中文| 日韩黄片视频试看| 97WW精品| 亚州,欧美在线| 欧美αv.com| 青娱乐亚洲热| 亚洲色婷婷综合久久一区二区三区| 成人av在线播放| 又黄又爽在线观看视频| 久久久精| 操日韩第| 偷拍亚洲高清图片| 综合色好色| 国产精品老师| 99re6国产精品99re| 18禁止看精品中文字幕| 精品视频久久久久九九九九9999| 欧美性Fer办公室秘书| 国产一区二区三区白丝| 久久熟女人| 伊人网高清| 精品国产精品一区二区| 国产精品乱码久久久、久久| 国产美女裸体秘 永久无遮挡| 午夜激情床戏激情| 欧美AB在线| 亚洲综合五月天| 后入式福利| 91精品国产高清久久久久久,亚洲成人| 清清草影| www.av在线视频| 99久热精品99re6热| 亚洲A曰本VA欧美VA视频| 北条麻妃99精品青青久久| 超碰97欧美| 亚洲 欧美 91| 人妻久久一区二区三区 | 看看日B真人视频| 在线观看色视频| 激情五月天校园春色网| 久草国产在线视频| 97超碰精品成| 久久精品国产亚洲AV无码电影| 久久精品国产久精国产| 欧美人妻精品一区二区| 日韩97精| 丁香九月激情啪| 97在线视频免费看| 欧美另类色图片| 天天肏天天干| 日本不卡高清免v欧美日韩在线观看| 91丝袜在线观看| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 超碰吊日色| 五月婷婷综合在线| 啊啊啊无码| 成人无码专区精品视频| 中文字幕日韩专区精品系列| 久久久久9999妇女| www..com操老师| 玖玖资源视频一区二区三区| 丁香六月啪| 国产传媒av天美传媒在线| 久久综合久久综合人久久夜精品| 一区操逼| 黑人粗大V S日韩女优视频| 婷婷操逼| 亚洲高清视频在线免费观看| 啊啊啊啊啊在线视频| 国产三级多多影院2022国产AA一级毛片无码 | 狠狠中文字幕| 精品国产无码中文| 亚洲天天精品| 禁片 高清 在线观看视频网站| 国产美女口爆吞精视频| 成 人片 黄色大片| 被男人吃奶很爽的毛片| 久久久久密臀一区二区| 中国女人内射6XXXXX| 中国91AV| 性欧美天天| 入口操逼网站| 超碰97护士| 97国产色图| 亚洲精品色| 黄色电影在线播放综合网站| 亚洲欧美天| 午夜成人福利影视| 操逼逼无码| 国产无码精品久久久久久| 中文久久96| 殴美牲| 欧美日韩一区二区三区四区蜜桃| 欧美色综合网| 人人超碰在线观看黄| 亚洲超碰在线| 亚洲无码超碰免费| 欧美色97| 久神马| 99热这里只有精| 免费操逼视频下载| 亚洲另类欧美精品| 日日不卡av| 亚洲伊人久久精品影院| 99青草| 六月丁香久久| 3P乱轮视频| 超碰日韩人妻| 天美传媒婬乱在| 九九九九九九免费视频| 亚洲综合113页| 长长久久免费视频| 久久久久久精品免费看A级| 亚洲 欧美 日韩 国产一区二区| 欧美色图99| 丝袜美腿射精91| 97天天在线| 麻豆精品A片免费观看| 四虎AV在线观看| 综合一区中亚洲国产成人综合精品 | 亚洲一区二区久久久久| 色欧美亚洲| 清纯唯美激情| 一本色道久久综合狠狠操| 2026国产精品视频| 日韩av色图综合| 久久精品免费| 人人天天欧洲| 激情五月婷婷| 久久久 国产精品| 无码av永久免费专区网站| 日韩99精品视频综合区| 色99999| 视频不卡中文字幕| 欧美天天干| 日韩99999| 久久亚洲一区二区色婷婷| 韩国毛片一区二区三区| 东京热不卡视频| 97精品国产精品免费观看| 狠综合网| 久久久99999久网站| 九九九久久久久| 蜜臀久久在线视频| 亚洲AV不卡在线观看尤物| 天天看特黄的免费网站| 国产不卡中文字幕免费avi| 精品视频专区| 天美传媒Av在线| 亚洲综合九| 国外91| 呻吟 欧美 日本 中出| 综合一区二区影视| 日韩成人人妻网站| 日本布卡一区二三区| 快灬快灬 一下爽蜜桃在线观看| 不卡二三区人妻少妇| 精品天堂| 国产强奸无码乱伦| 偷拍 欧美 日韩| 日韩无码精品综合久久| 精品成人动漫一区二区|