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

ARTICLE DETAIL

資訊詳情

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

瀏覽器API Notification實(shí)現(xiàn)系統(tǒng)通知:權(quán)限、參數(shù)與兼容指南

瀏覽器API Notification實(shí)現(xiàn)系統(tǒng)通知:權(quán)限、參數(shù)與兼容指南 Notification API 剛出來那幾年我一直覺得它就是個(gè)“錦上添花”的小功能網(wǎng)頁(yè)能彈個(gè)系統(tǒng)通知看著挺酷但真正想依賴它做業(yè)務(wù)提醒總覺得不太靠譜。直到后來在幾個(gè)實(shí)際項(xiàng)目里被迫認(rèn)真啃了一遍才意識(shí)到這個(gè) API 遠(yuǎn)比想象中有分量。尤其是當(dāng)你做的是內(nèi)部運(yùn)營(yíng)系統(tǒng)、工單平臺(tái)、預(yù)約提醒這類產(chǎn)品時(shí)用戶關(guān)掉頁(yè)面后還能收到消息提醒體驗(yàn)上完全是兩個(gè)檔次。這篇文章我就圍繞“瀏覽器 APINotification實(shí)現(xiàn)系統(tǒng)通知”這個(gè)主題把權(quán)限申請(qǐng)、通知參數(shù)、生命周期、業(yè)務(wù)集成、踩坑排查從頭到尾捋一遍。不管你是剛接觸前端的小白還是已經(jīng)在項(xiàng)目里接過通知功能但被各種兼容性問題折騰過的開發(fā)者這篇文章應(yīng)該都能給你一些直接用得上的參考。1. 權(quán)限鏈路先搞懂為什么用戶必須手動(dòng)點(diǎn)一下才能彈通知1.1 Notification API 的權(quán)限模型與狀態(tài)流轉(zhuǎn)Notification API 最大的特點(diǎn)是它不在網(wǎng)頁(yè)內(nèi)部展示內(nèi)容而是直接調(diào)用操作系統(tǒng)層面的通知能力所以瀏覽器對(duì)它的管控非常嚴(yán)格。這個(gè) API 的核心入口是Notification.permission它只有三個(gè)值granted、denieddefault。很多人一開始會(huì)忽略default這個(gè)狀態(tài)實(shí)際上它才是大多數(shù)新用戶首次訪問頁(yè)面時(shí)的默認(rèn)值含義是“用戶還沒有做過任何決定”。整個(gè)權(quán)限模型是這樣的頁(yè)面加載后Notification.permission是default此時(shí)調(diào)用Notification.requestPermission()瀏覽器會(huì)彈出授權(quán)詢問框用戶點(diǎn)擊“允許”后變成granted點(diǎn)擊“屏蔽”或“不允許”后變成denied。一旦變成denied當(dāng)前站點(diǎn)在絕大多數(shù)瀏覽器里就基本沒有挽回余地了再調(diào)用requestPermission()也不會(huì)彈出授權(quán)框而是直接返回denied控制臺(tái)會(huì)提示用戶已在設(shè)置里屏蔽了該站點(diǎn)的通知權(quán)限。這里有個(gè)關(guān)鍵點(diǎn)requestPermission()必須由用戶主動(dòng)手勢(shì)觸發(fā)。什么意思就是你不能在頁(yè)面加載后立刻執(zhí)行這句代碼而是應(yīng)該把它放在按鈕點(diǎn)擊、表單提交這類由用戶操作引發(fā)的事件回調(diào)里。瀏覽器這樣設(shè)計(jì)是因?yàn)橥ㄖ獧?quán)限屬于高打擾能力如果任何網(wǎng)站都能在后臺(tái)靜默申請(qǐng)權(quán)限那整個(gè)互聯(lián)網(wǎng)的通知欄很快就變成廣告位了。我在項(xiàng)目里就犯過這個(gè)錯(cuò)誤想在頁(yè)面初始化時(shí)直接申請(qǐng)權(quán)限結(jié)果在部分瀏覽器中彈窗直接被攔甚至有的瀏覽器干脆靜默失敗連個(gè)報(bào)錯(cuò)都沒有。排查了很久才發(fā)現(xiàn)是調(diào)用時(shí)機(jī)不對(duì)。1.2 權(quán)限申請(qǐng)的正確姿勢(shì)與降級(jí)方案正確的權(quán)限申請(qǐng)流程應(yīng)該是這樣先判斷當(dāng)前狀態(tài)如果是granted直接初始化通知能力如果是default在用戶點(diǎn)擊某個(gè)功能按鈕時(shí)再?gòu)椛暾?qǐng)如果是denied界面上要給用戶一個(gè)明確的指引引導(dǎo)他們?nèi)g覽器設(shè)置里手動(dòng)打開通知權(quán)限而不是反復(fù)調(diào)用 API。寫代碼的時(shí)候可以封裝成一個(gè) Promise方便在業(yè)務(wù)里等待用戶的選擇結(jié)果async function ensureNotificationPermission() { if (!(Notification in window)) { return { supported: false, permission: unsupported }; } if (Notification.permission granted) { return { supported: true, permission: Notification.permission }; } if (Notification.permission denied) { return { supported: true, permission: Notification.permission }; } const permission await Notification.requestPermission(); return { supported: true, permission }; }調(diào)用的時(shí)候把它掛在一個(gè)明確的用戶動(dòng)作后面比如“開啟消息提醒”按鈕。不要放在路由切換、定時(shí)器回調(diào)這些非用戶手勢(shì)的上下文里。此外還需要注意在部分瀏覽器里requestPermission()返回的是一個(gè) Promise但在舊版的 Safari 里它需要回調(diào)函數(shù)寫法上建議用Promise.resolve()包一層或者干脆做一次兼容處理把兩種方式都覆蓋到避免老設(shè)備上白屏報(bào)錯(cuò)。在實(shí)際業(yè)務(wù)里用戶拒絕權(quán)限后不要直接放棄可以做一個(gè)“引導(dǎo)開啟”的浮層告訴用戶“通知權(quán)限被關(guān)閉了請(qǐng)前往瀏覽器設(shè)置中允許本站發(fā)送通知”。桌面端的 Chrome 和 Edge 里地址欄左側(cè)的站點(diǎn)信息圖標(biāo)可以快速進(jìn)入權(quán)限設(shè)置移動(dòng)端則在瀏覽器菜單里不同廠商入口稍有差異。這一層雖然不屬于 API 本身但能明顯減少用戶因?yàn)檎`操作屏蔽權(quán)限后流失的情況。2. 從 new Notification 到真正的系統(tǒng)通知核心細(xì)節(jié)拆解2.1 構(gòu)造函數(shù)與 Options 參數(shù)逐項(xiàng)說明拿到權(quán)限之后創(chuàng)建通知其實(shí)非常簡(jiǎn)單const notification new Notification(標(biāo)題內(nèi)容, { body: 這里是通知的正文內(nèi)容用于展示更詳細(xì)的信息, icon: https://example.com/icon.png, image: https://example.com/image.png, badge: https://example.com/badge.png, tag: order-10086, renotify: true, requireInteraction: true, silent: false, data: { orderId: 10086, url: /orders/10086 }, dir: auto });標(biāo)題是第一個(gè)參數(shù)不能為空字符串否則部分瀏覽器會(huì)直接拋異常。第二個(gè)參數(shù)的 Options 對(duì)象里每個(gè)字段背后都有各自的適用場(chǎng)景我逐個(gè)說一下我在實(shí)際使用中的理解。body是通知正文不需要多說重點(diǎn)在于控制長(zhǎng)度。桌面系統(tǒng)一般會(huì)展示兩到三行超過部分會(huì)用省略號(hào)代替所以核心信息一定要放在開頭。icon是通知欄左側(cè)的圖標(biāo)通常建議使用 192px 以上的正方形 PNG帶透明背景效果更好如果用 JPEG 圖邊緣可能會(huì)顯得很生硬。badge則是在移動(dòng)端通知圖標(biāo)位置顯示的小徽章某些瀏覽器里只展示這個(gè)極簡(jiǎn)小圖標(biāo)所以它的視覺要求比icon更高盡量使用簡(jiǎn)單的幾何圖形縮小后仍然可辨識(shí)。image是大圖桌面 Chrome 和 Edge 支持可以展示在通知正文下方適合消息卡片、營(yíng)銷海報(bào)、數(shù)據(jù)截圖這類場(chǎng)景但 IE 和不支持的系統(tǒng)上會(huì)被忽略。tag這個(gè)字段極其關(guān)鍵。它是通知的分組標(biāo)識(shí)當(dāng)新建通知的 tag 與當(dāng)前已有未關(guān)閉通知的 tag 相同時(shí)瀏覽器會(huì)用新通知替換舊通知避免同一個(gè)會(huì)話的消息把系統(tǒng)通知欄刷爆。舉個(gè)例子用戶在聊天群里連續(xù)收到 20 條消息如果不設(shè)置 tag系統(tǒng)里就會(huì)出現(xiàn) 20 條通知設(shè)置了 tag 為chat-123新的通知會(huì)覆蓋舊的通知欄里始終只有一條并且會(huì)更新內(nèi)容。renotify配合tag使用設(shè)為true時(shí)替換通知會(huì)重新發(fā)出提示音和震動(dòng)否則替換時(shí)保持靜默。這里有個(gè)坑MDN 上明確說明只設(shè)置tag不設(shè)置renotify時(shí)替換是安靜的但如果你設(shè)置renotify: true卻不設(shè)置tag部分瀏覽器會(huì)忽略它因?yàn)楦緵]有可替換的舊通知。requireInteraction控制通知是否自動(dòng)消失。默認(rèn)情況下通知大約幾秒后自動(dòng)收起設(shè)為true后通知會(huì)一直留在屏幕上直到用戶手動(dòng)點(diǎn)擊或關(guān)閉適合那些不能錯(cuò)過的系統(tǒng)告警、訂單支付結(jié)果這類場(chǎng)景。代價(jià)就是用戶如果不手動(dòng)清理通知會(huì)一直占據(jù)屏幕空間所以要用在真正需要強(qiáng)提醒的場(chǎng)景別全程無腦開啟。silent是控制聲音和震動(dòng)的。如果同時(shí)使用requireInteraction: true和silent: true可以實(shí)現(xiàn)一個(gè)不打攪人但又不丟失的“桌面角標(biāo)”式通知。data字段用來掛載業(yè)務(wù)數(shù)據(jù)點(diǎn)擊通知后通過notification.data取回這個(gè)非常實(shí)用可以把頁(yè)面路徑、主鍵 ID 都放進(jìn)去。dir是文字方向除非做阿拉伯語(yǔ)、希伯來語(yǔ)等 RTL 適配否則用默認(rèn)的auto就夠了。2.2 事件監(jiān)聽與內(nèi)存管理創(chuàng)建出來的notification對(duì)象上有三個(gè)關(guān)鍵事件show、click、close還有一個(gè)error事件需要注意。show在通知顯示后觸發(fā)一般很少用到但可以用來統(tǒng)計(jì)通知到達(dá)率。click是最常用的用戶點(diǎn)擊通知后需要聚焦到對(duì)應(yīng)的頁(yè)面、跳轉(zhuǎn)路由或打開某個(gè)鏈接。這里有一個(gè)非常重要的細(xì)節(jié)在click事件回調(diào)里調(diào)用window.focus()并不能保證把瀏覽器窗口切換到前臺(tái)你需要用window.parent.focus()或直接操作某個(gè)可聚焦的 DOM 元素必要時(shí)配合window.open()打開新標(biāo)簽頁(yè)。close在通知被關(guān)閉或替換時(shí)觸發(fā)適合做一些清理和埋點(diǎn)。事件綁定要和通知對(duì)象生命周期配合起來const notification new Notification(新訂單, { body: 訂單 #10086 待處理, tag: order-10086, data: { url: /orders/10086 } }); notification.onclick (event) { event.preventDefault(); const targetUrl notification.data.url || /; window.open(targetUrl, _blank); notification.close(); }; notification.onclose () { console.log(通知已關(guān)閉); }; notification.onerror (err) { console.error(通知發(fā)生錯(cuò)誤, err); };內(nèi)存方面要注意如果頁(yè)面上生成了大量通知對(duì)象一定要在不再需要時(shí)調(diào)用notification.close()釋放否則通知即使是系統(tǒng)層面的瀏覽器側(cè)的對(duì)象引用也會(huì)堆積占用內(nèi)存。尤其在使用tag自動(dòng)替換時(shí)被替換掉的舊通知對(duì)象需要手動(dòng) close否則它的引用不會(huì)自動(dòng)清除。2.3 不同瀏覽器/平臺(tái)的行為差異這里直接給一張我在項(xiàng)目里整理過的對(duì)比表能省掉不少排查時(shí)間平臺(tái)行為特征說明桌面 Chrome / Edge支持 icon、image、badge、tag、renotify整體支持最完整通知可被瀏覽器自身管理桌面 Firefox支持大部分字段但不支持 image 大圖大圖會(huì)在代碼里合法但被忽略macOS Safari需注意證書與用戶手勢(shì)限制權(quán)限申請(qǐng)邏輯較嚴(yán)格不支持部分現(xiàn)代字段iOS Safari不支持 Web Notification只能通過 iOS 特有的 Web Push 配合主屏幕 Web App 使用安卓 Chrome支持 icon、badge通知樣式由系統(tǒng)決定需要 HTTPS 環(huán)境否則 API 直接不可用Windows 10/11通知走系統(tǒng)通知中心需要開啟系統(tǒng)的“專注助手”不會(huì)攔截通知否則會(huì)被折疊經(jīng)常會(huì)遇到的場(chǎng)景是同一個(gè)項(xiàng)目在 Chrome 上測(cè)試非常好到了 Firefox 上 image 不顯示排查半天發(fā)現(xiàn)根本不是代碼問題而是平臺(tái)差異。所以做兼容性測(cè)試的時(shí)候不能只看一兩個(gè)瀏覽器就收工至少要覆蓋目標(biāo)用戶最常用的那兩三個(gè)。3. 實(shí)操過程搭一個(gè)可復(fù)用的系統(tǒng)消息通知模塊3.1 模塊設(shè)計(jì)與狀態(tài)初始化說了這么多理論直接落地一個(gè)項(xiàng)目里可以直接復(fù)用的通知模塊。先設(shè)計(jì)整體結(jié)構(gòu)模塊需要在頁(yè)面加載時(shí)完成權(quán)限狀態(tài)探測(cè)提供requestPermission、send、click綁定等方法同時(shí)統(tǒng)一處理瀏覽器兼容和錯(cuò)誤降級(jí)。第一步是初始化const NotificationCenter { supported: Notification in window, permission: Notification.permission, init() { if (!this.supported) return; this.permission Notification.permission; return this; }, async ensurePermission() { if (!this.supported) return false; if (this.permission granted) return true; if (this.permission denied) return false; const result await Notification.requestPermission(); this.permission result; return result granted; }, send({ title, body, tag, icon, image, data, silent, requireInteraction }) { if (!this.supported || this.permission ! granted) return null; const options { body, tag, icon, image, data }; if (typeof silent boolean) options.silent silent; if (typeof requireInteraction boolean) options.requireInteraction requireInteraction; try { const notification new Notification(title, options); return notification; } catch (err) { console.error(通知?jiǎng)?chuàng)建失敗, err); return null; } } }; NotificationCenter.init();有幾點(diǎn)要說清楚。init()在頁(yè)面加載時(shí)就執(zhí)行但ensurePermission()必須放到用戶點(diǎn)擊事件里調(diào)用不要在init里彈授權(quán)。代碼里所有創(chuàng)建通知的操作都用 try 包裹因?yàn)榫退銠?quán)限是granted也可能因?yàn)橄到y(tǒng)通知服務(wù)被關(guān)閉、參數(shù)非法等原因拋出異常不能讓它打斷頁(yè)面主流程。創(chuàng)建失敗時(shí)返回null業(yè)務(wù)側(cè)可以用這個(gè)返回值決定是否降級(jí)到頁(yè)面內(nèi)彈窗。3.2 場(chǎng)景實(shí)戰(zhàn)訂單提醒與消息聚合一個(gè)比較典型的業(yè)務(wù)場(chǎng)景是訂單后臺(tái)。每當(dāng)有用戶提交了新訂單如果運(yùn)營(yíng)人員沒停留在頁(yè)面上一條系統(tǒng)通知能有效提升響應(yīng)速度。這時(shí)可以這樣用async function onNewOrder(order) { const hasPermission await NotificationCenter.ensurePermission(); if (!hasPermission) { // 降級(jí)方案頁(yè)面頂部展示紅色提示條 showInPageAlert(新訂單 ${order.no} 待處理); return; } NotificationCenter.send({ title: 新訂單 ${order.no}, body: 客戶${order.customerName}金額${order.amount}元, tag: order-${order.id}, icon: /images/order-icon.png, data: { url: /orders/${order.id} }, requireInteraction: true, silent: false }); }再?gòu)?fù)雜一點(diǎn)的場(chǎng)景是消息聚合。當(dāng)某個(gè)會(huì)話短時(shí)間內(nèi)有多條新消息時(shí)沒必要每次都彈新通知正確做法是使用固定 tag 配合更新 bodyfunction notifyNewMessage({ chatId, latestMessage, unreadCount }) { const title unreadCount 1 ? ${unreadCount} 條新消息 : 來自 ${latestMessage.sender} 的新消息; NotificationCenter.send({ title, body: latestMessage.content, tag: chat-${chatId}, icon: /images/chat-icon.png, data: { url: /chats/${chatId} }, requireInteraction: false, silent: false }); }這樣用戶在一個(gè)會(huì)話里連續(xù)收到 10 條消息通知欄始終只有一條點(diǎn)擊后直達(dá)會(huì)話頁(yè)。我在實(shí)際項(xiàng)目里測(cè)試過如果不做聚合用戶在群里聊十分鐘通知欄能堆出幾十條通知體驗(yàn)非常糟糕。3.3 配合 Service Worker讓通知在頁(yè)面關(guān)閉后依然可達(dá)Notification API 真正的威力不在頁(yè)面存活期間彈通知而是配合 Service Worker 實(shí)現(xiàn)離線推送。基本鏈路是頁(yè)面注冊(cè) Service Worker通過訂閱接口拿到推送憑證服務(wù)端在需要提醒時(shí)把消息推給瀏覽器Service Worker 收到后調(diào)用self.registration.showNotification()顯示系統(tǒng)通知。Service Worker 里的事件監(jiān)聽比較標(biāo)準(zhǔn)self.addEventListener(push, (event) { const payload event.data ? event.data.json() : {}; const options { body: payload.body || , icon: payload.icon || /default-icon.png, badge: payload.badge || /badge.png, tag: payload.tag || push-default, data: payload.data || {} }; event.waitUntil( self.registration.showNotification(payload.title || 新消息, options) ); }); self.addEventListener(notificationclick, (event) { event.notification.close(); const url event.notification.data.url || /; event.waitUntil( clients.matchAll({ type: window, includeUncontrolled: true }) .then((windowClients) { for (const client of windowClients) { if (focus in client) { return client.navigate(url).then((client) client.focus()); } } return clients.openWindow(url); }) ); });注意這里有個(gè)細(xì)節(jié)showNotification()只能由 Service Worker 調(diào)用頁(yè)面里創(chuàng)建的 Notification 對(duì)象不能直接被 Service Worker 引用兩條鏈路是獨(dú)立的。如果項(xiàng)目既有“用戶在頁(yè)面內(nèi)”時(shí)的通知場(chǎng)景又有“頁(yè)面關(guān)閉”后的推送場(chǎng)景兩套邏輯需要分開維護(hù)但最終展示的形式都是系統(tǒng)通知所以之前說的 Options 參數(shù)經(jīng)驗(yàn)在 Service Worker 里完全適用。3.4 生產(chǎn)環(huán)境必需條件HTTPS 與站點(diǎn)配置這一點(diǎn)我放到實(shí)操章節(jié)的最后說是怕一開始說太多容易勸退新手但它確實(shí)非常重要Notification API 在絕大多數(shù)主流瀏覽器中都被歸類為“強(qiáng)大功能”它要求頁(yè)面運(yùn)行在安全上下文HTTPS中。本地開發(fā)時(shí)localhost被視為安全上下文可以正常調(diào)試但一旦部署到內(nèi)網(wǎng)或測(cè)試服如果站點(diǎn)還是 HTTPNotification in window雖然返回 true但requestPermission()會(huì)直接失敗或者根本不彈框。解決思路無非是兩條一是生產(chǎn)環(huán)境統(tǒng)一走 HTTPS內(nèi)部管理系統(tǒng)可以自建證書成本不高二是如果實(shí)在沒有 HTTPS 條件就得放棄原生的 Notification API降級(jí)到頁(yè)面內(nèi)自定義彈窗或者 WebSocket 消息提醒不能硬撐。我見過一個(gè)團(tuán)隊(duì)把 HTTP 部署的前端項(xiàng)目做完才發(fā)現(xiàn)通知功能在正式環(huán)境完全不可用最后返工加了證書浪費(fèi)了不少時(shí)間。提前確認(rèn)這一點(diǎn)能省掉很多無謂的調(diào)試成本。4. 常見問題與排查技巧實(shí)錄4.1 問題速查表把我在項(xiàng)目中真正遇到過的、以及身邊同事踩過的常見坑整理成了一張速查表遇到問題時(shí)可以先對(duì)照自查現(xiàn)象可能原因排查方式與解法頁(yè)面加載后沒有彈授權(quán)框requestPermission()不在用戶手勢(shì)回調(diào)里將申請(qǐng)邏輯移到按鈕點(diǎn)擊、表單提交事件中調(diào)用requestPermission()后直接返回denied用戶之前在設(shè)置里屏蔽過權(quán)限提示用戶去瀏覽器設(shè)置里重新允許無法代碼強(qiáng)制更改新通知彈出但立即消失未設(shè)置requireInteraction系統(tǒng)默認(rèn)自動(dòng)收起對(duì)重要通知設(shè)置requireInteraction: true連續(xù)多條消息刷爆通知欄未設(shè)置tag或設(shè)置了不同的 tag同一會(huì)話/訂單使用固定 tag 聚合通知點(diǎn)擊通知沒有跳轉(zhuǎn)或沒有聚焦未處理notificationclick事件或窗口 focus 邏輯有問題綁定click事件用window.open或clients.openWindow處理有g(shù)ranted權(quán)限但通知不顯示系統(tǒng)通知服務(wù)被關(guān)閉或?qū)W⒅珠_啟檢查系統(tǒng)設(shè)置關(guān)閉專注助手測(cè)試系統(tǒng)通知本身是否可用在部分瀏覽器上image不顯示該瀏覽器不支持通知大圖降級(jí)設(shè)計(jì)把重要圖片信息放到 body 或 icon 中授權(quán)后打開新標(biāo)簽頁(yè)通知又要求重新授權(quán)瀏覽器按源origin隔離權(quán)限確認(rèn)通知權(quán)限綁定的是源而不是標(biāo)簽頁(yè)不需要重新授權(quán)可能是開發(fā)者工具屏蔽了權(quán)限r(nóng)enotify: true不生效未設(shè)置tag或 tag 與之前的通知不一致必須讓新通知攜帶與舊通知相同的 tag 才能替換并重新提醒iOS Safari 完全無法使用 NotificationiOS 不支持 Web Notification API使用 iOS 的 Web Push 能力或降級(jí)為應(yīng)用內(nèi)提醒4.2 我踩過的三個(gè)比較隱蔽的坑上面表格是概括性的這里展開說說我印象最深的三次排障經(jīng)歷每次排查的過程都挺磨人的。第一次是“通知在 Chrome 上不顯示”。權(quán)限狀態(tài)確實(shí)是granted代碼執(zhí)行也沒有報(bào)錯(cuò)但通知就是不出來。后來在系統(tǒng)右下角操作中心里發(fā)現(xiàn)了被折疊的通知——Windows 10 的“專注助手”會(huì)在特定時(shí)段攔截所有通知把它們靜默收進(jìn)操作中心。這個(gè)問題不是代碼能解決的需要引導(dǎo)用戶關(guān)閉專注助手或把站點(diǎn)加入例外列表。第二次是“點(diǎn)擊通知無法跳轉(zhuǎn)”。當(dāng)時(shí)寫了notification.onclick () { location.href /xxx }在 Chrome 里測(cè)試正常結(jié)果放到某款國(guó)產(chǎn)瀏覽器里就成了“點(diǎn)擊無效”。排查后發(fā)現(xiàn)這個(gè)瀏覽器對(duì) location.href 的頁(yè)面跳轉(zhuǎn)做了限制從通知點(diǎn)擊進(jìn)入的上下文里不能直接修改當(dāng)前頁(yè)面地址。后來統(tǒng)一改用window.open(url, _blank)問題就解決了。第三次是“通知在頁(yè)面刷新后權(quán)限狀態(tài)丟失”?,F(xiàn)象是用戶明明點(diǎn)擊了允許刷新頁(yè)面后又變成default。排查發(fā)現(xiàn)是因?yàn)闉g覽器開發(fā)者工具測(cè)試時(shí)把“重新加載時(shí)清除權(quán)限”選項(xiàng)打開了真實(shí)環(huán)境中并不存在這個(gè)問題。但當(dāng)時(shí)差點(diǎn)讓我以為 API 的權(quán)限不持久花了不少時(shí)間翻文檔。這里也提醒大家在做權(quán)限相關(guān)調(diào)試時(shí)先確認(rèn)開發(fā)者工具里的設(shè)置沒有干擾項(xiàng)。4.3 本地調(diào)試與真機(jī)驗(yàn)證建議Notification 的調(diào)試難度在于它是系統(tǒng)級(jí) UI普通的前端調(diào)試面板無法完全模擬。我現(xiàn)在的習(xí)慣是先寫一個(gè)最簡(jiǎn)頁(yè)面只包含一個(gè)按鈕點(diǎn)擊后申請(qǐng)權(quán)限并立即彈一條通知用這個(gè)頁(yè)面排除業(yè)務(wù)代碼干擾快速驗(yàn)證環(huán)境是否支持。確認(rèn)這條鏈路通了之后再逐步往項(xiàng)目里集成。在 Chrome DevTools 的 Application 面板里可以手動(dòng)清空通知權(quán)限隨時(shí)重置回default方便反復(fù)測(cè)試授權(quán)流程。Firefox 則需要在 about:preferences 的隱私與安全分類里手動(dòng)移除站點(diǎn)權(quán)限。每輪測(cè)試都要覆蓋三種狀態(tài)首次訪問的default、允許后的granted、拒絕后的denied以及“先允許后手動(dòng)改回拒絕”的過渡狀態(tài)確保 UI 上對(duì)應(yīng)的引導(dǎo)文案正確顯示。真機(jī)測(cè)試的注意事項(xiàng)也不少。安卓端不同廠商的瀏覽器對(duì) Notification 的樣式和交互支持存在差異尤其是小米、華為、OPPO 等自帶瀏覽器權(quán)限管理入口五花八門彈出權(quán)限框的樣式也不一樣。如果項(xiàng)目目標(biāo)用戶里有相當(dāng)比例使用手機(jī)瀏覽器務(wù)必要拿真機(jī)一臺(tái)一臺(tái)測(cè)過去。單純依賴桌面模擬器是遠(yuǎn)遠(yuǎn)不夠的。5. 合理使用 Notification 的幾條個(gè)人體會(huì)回想這個(gè) API 的使用過程我最深的感受是Notification 本身不難難的是把它嵌入到真實(shí)業(yè)務(wù)場(chǎng)景時(shí)各種平臺(tái)限制和用戶預(yù)期都在挑戰(zhàn)你。這里分享幾條自己在項(xiàng)目里總結(jié)出來的原則。第一不要把通知當(dāng)成唯一的信息觸達(dá)渠道。系統(tǒng)通知天然會(huì)被用戶關(guān)閉、被系統(tǒng)折疊、被平臺(tái)限制它應(yīng)該是提醒鏈路里最顯眼的一環(huán)但絕不能是唯一的一環(huán)。我在設(shè)計(jì)通知模塊時(shí)都會(huì)同步保留頁(yè)面內(nèi)提醒的能力根據(jù)權(quán)限狀態(tài)自動(dòng)降級(jí)確保用戶關(guān)掉通知權(quán)限后業(yè)務(wù)消息仍然可以通過站內(nèi)信或頁(yè)面彈窗觸達(dá)。第二尊重用戶的注意力。requireInteraction: true一定要慎用每一條常駐通知都在消耗用戶對(duì)產(chǎn)品的耐心。通知的文案要直接給出結(jié)論不要用“您的訂單有更新”這種廢話直接說“訂單 #10086 已發(fā)貨順豐單號(hào) SF1234567890”才是有效的通知。沒用的通知比沒有通知更讓人反感。第三權(quán)限申請(qǐng)一定要選對(duì)時(shí)機(jī)。不要把“開啟通知”這個(gè)請(qǐng)求放在用戶剛進(jìn)入頁(yè)面的時(shí)候也不要在用戶還沒有體驗(yàn)到產(chǎn)品價(jià)值前就急著索要權(quán)限。更好的時(shí)機(jī)是在用戶完成了一次關(guān)鍵操作之后比如創(chuàng)建了一個(gè)訂單、設(shè)置了一個(gè)預(yù)約、加入了一個(gè)會(huì)話這時(shí)候用戶對(duì)“后續(xù)要有提醒”是有預(yù)期的授權(quán)通過率會(huì)明顯更高。第四用 tag 做聚合是 Notification API 里最值得投入的設(shè)計(jì)。我之前在一個(gè)即時(shí)通信 Web 端里做過一次統(tǒng)計(jì)做了 tag 聚合之后通知欄消息條數(shù)降低了 80% 以上用戶對(duì)通知功能的吐槽也幾乎消失了。凡是可能高頻觸發(fā)的通知場(chǎng)景都應(yīng)該設(shè)計(jì)好 tag 策略。最后如果團(tuán)隊(duì)里同時(shí)有前端和服務(wù)端同學(xué)建議把 Notification 的權(quán)限鏈路、參數(shù)規(guī)劃、通知模板、降級(jí)方案沉淀成一份文檔因?yàn)檫@里涉及的不只是前端 API 調(diào)用還牽扯 Service Worker 的推送證書、服務(wù)器端消息簽名、系統(tǒng)權(quán)限設(shè)置引導(dǎo)文案這些跨端協(xié)作的內(nèi)容。把流程定清楚后續(xù)每次接入新業(yè)務(wù)場(chǎng)景都會(huì)輕松很多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
东京热,男人的天堂| 探花精品视频| JuliaAnnXXX888| 偷拍五区| 五月天婷婷在线看| 亚洲色图殴美色图激情乱伦| A片 AV一级在线播放观看免费| 日韩成人综合网| 国产女性无套 免费观看| 日本成人A片网站| 精品久久久久久中文| 四虎国产精品永久地址入口| 欧美日韩国产三级黄色| 亚洲日本韩国在线| 激情五月天社区| 国产精品情侣啪啪| 婷婷五月成人| 精品一区二区亚洲国产| 国产精品一区av在线| 天美传媒婬乱| 亚洲男人在线观看天堂| 九九五月天| 亚洲性感丝袜诱惑在线观看| 久久手机视直播| 国产精品密臀网在线观看| 久久99黄色卞西瓜| 亚洲精品国产拍免费91在线| 超碰久久性爱| 亚洲午夜福利视频| 日韩精品在线视频,日韩精品……| 五月丁香啪啪啪| 一本一道人妻久久一区二区三区 | 国产日韩欧美| 秋霞成人做爱| 久久99精品国产| 福利色色| 78超碰| 欧美大香蕉在线观看| 久久青娱乐| 旡码电影特区| 另类图片五月| 色情成人五月天| 久久久久久加勒比| 九色97| 97伊人超碰| 中文字幕交换人妻| 97中文综合| 91视频伊人| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 欧美综合天堂| 色婷婷久久| 伊人性在线视频| 青青草黑寡妇男人天堂| 激激五月| 九九九九一级| 久久久久久免费电影| 亚洲加勒比色图| 啊啊啊啊在线观看网址| 男插女青青影院| 亚洲污污网站| 亚洲操操操无码| 屁股久久久久久| 色色毛片| AA特级绝黄| 国产三级电影免费观看| 人妻啊啊人妻啊| 麻豆AV一区二区| 亚州男人的天堂| 亚洲乱熟女一区二区| 国产精品久久久久久久久久久久久久吹| 欧美天天综合网| 在线播放成人高清免费视频| 欧美日韩国内不卡| 99国内精品| 日韩精品9999| 日产欧美电影一区二区三区| 18禁美女裸体无遮挡啪啪| 日韩欧美国产高清视频| 99热 按摩 日韩| 欧美黑人与女人91| 日本一级二级三级网站| 99少妇精品视频| 中文字幕人乱码中文字的预防方法 | 亚州色图第三区| 国产乱人妻精品入口| 男人天堂最新手机版在线青青草| 精品成人无码| 日韩人妻少妇中文字幕| 国产AV线| 国产乱伦性爱AV| 久久免费中文字幕在线观看| 爱丝福利| 国产91精品福利在线| 欧美在线视频99| 性性久久| 大屁股人妻女教师撅着屁股| 久久久爆乳翘臀一线天伦理视频| 精品一区二区久久| 青娱乐亚洲自拍| 人妻少妇久久久| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 亚洲最新中文字幕免费| 美女91在线观看| 精品久久97| 亚欧性爱ab| 免费网色网站| 无码久久国产| 亚洲乱色视频一区、二区在线| 草B在线| 亚洲日韩成人性爱视频| 亚洲少妇综合| 天天日天天插| 1240青青草一区二区三区视频天爱| α√在线| 99精品无码| 国产97视频免费观看| 久久av网| 国产成人无码a| 精品妇女一区二区三区| 超碰97护士| 婷婷综合| 2024年最新色情网站在线观看| 920日本午夜免费| 欧美亚洲在线| 97精彩视频网站| 操一对老熟妇爽上天视频| 婷婷激情五月天小说网| 欧美综合自拍亚洲综合图| 亚洲第一狼人丝袜美女另类 | av毛片aaaaa免费看| 日本蜜桃| 99re热有精品视频国产| 五月天加勒比啪| 蜜乳Av成人片网站| 日韩无码服务区| 人妻日日干| 精品少妇一区二区| 亚洲色图超碰在线| 久久久久人妻二区精品叶可怜| 黄色小说亚洲| 天天干天天操天天干天天操| 九九九国产精品| 91丝袜美女国产| 午夜精品久久99蜜桃的功能章节| 日本 免费 一区二区三区 久久香蕉 | 91成人久久 | 深田咏美亚洲精品福利社| 九九九九精品在线| 91九久| 日本成人免费一区二区三区| 蜜桃精品视频一区二区三区| 亚洲图片欧美91N| 国产强奸无码乱伦| 97超碰超欧美。| 日韩婷婷| 很黄很色的视频在线观看| 国产亚洲精品美女| 亚洲成?V人片在线观看福利| 91人妻人人澡人人爽人人精品| 成人欧美日超碰| 欧美日韩国产中文精品字幕自在自线| 蜜臀中文无码午夜| 激情五月天校园春色网| 嗯嗯啊啊用力视频免费| 日韩中文字幕视频在线观看| 精…码一二三区| 成人A片男人的天堂| 久久久久9999| 18啪啪手机免费性爱| 人妻精品一区一区三区蜜桃91| 91在线欧色| 国岛片视频| 97色亚洲| 国产精品白丝AV| 欧美日韩资源在线| 91美女视屏| 免费一级视频特黄色大片| 桃花色综合影院| 啊啊啊啊免费视频| 亚洲熟女综合一区二区| 精品无码产区一区二| 欧美有码亚洲中文字幕一区二区三区四区| 黄色片大香蕉| av在线不卡一区二区三区| 99re98| 热热色综合网| 人人搞人人插人人操| 蜜臀久久精品久久久久视频| 综合网~91综合网| 大香蕉综合| 婷婷丁香五月综合| 国产 日韩 欧美 人妻 熟女 中文 69人妻精品一区二区绯色 | 黄片无码在线制服| 精品久久久久久中文字幕三区| 日日摸日日碰夜夜爽视频| 91国产丝袜美女| 欧美色图 人妻| 丝袜内射| 久久中日麻豆| silk lablo在线观看一区二区| 亚洲精品819| 九九九九九九九精品视频| 色香色欲天天综合网天天来吧 | 内射黑丝袜| 欧美婷婷久久| 麻豆国产免费影片| 日韩欧美综合激情| 久久久久久久九九九九九九| 老司机深夜18禁污污网站| 精品人妻一区二区三区免费视频| 日本免费一区二区不卡| 欧美亚洲韩国视频十五区| 噜噜噜久久亚洲精品色情| 国产后入精品| 翘臀vidoes| 青青草视频久久| 欧美很很操视频| 18禁免费视频| 精品中文字幕一区二区l - 百度| 上海一级黄片| www.av在线视频| av一区二区三区四区| 在线免费观看高清无码视频| 中国农村熟妇毛片视频| 黑人猛交| 国产精品网址| 淫荡少妇免费| 午夜无码精品免费看性色| 国产又色又粗又黄又爽| 看一级特黄a大一片| 成人自拍三级在线观看| 国产极品99热在线播放69| 日本三级一区二区 在线| 亚洲免费在线探花| 天天草天天干天天日| 国产欧美岛国精品一区 | 视频在线中文字幕| 97情超碰色| 另类图片五月天| 9久9久9久9久视频网站| 好爽免费视频| 国产精品乱码久久久久| 人人操av| 荡小穴在线观看| 动漫片子网站3黄| 国产第二页| 超碰97在线色男人??| 手机av亚洲丝袜美腿日韩第一页二页| 大逼色网站| 亚洲 欧美 日韩 国产一区二区| 欧美v亚洲v综合v国产v妖精| 国人欧美精品一区二区| 色婷婷影视| 精品国产污一区二区三区| 91在线页| 精品一区二区2| 亚洲无码视频免费在线观看网址!| 囯产精品久久久久久久久久梁医生 | 五月天色图| 今日头条成人一区二区三区四虎精品| 成人精品欧洲亚洲| 91免费看一区二区三区| 伦伦成年午夜免费视频| 久久97| 18精品一区| 久久久久久裸体| 国产丝袜啪啪| 无套内射人妻在线播放| 超碰79人人乐| 亚洲少妇视频| 久操视频资源站公开| 一区二区三区精品黑丝白丝酒店对鸡| 婷婷五月天久久精品视频一区二区三区| 97欧美色综合| 亚洲影院无码在线| 精品人人插人人操| 天美传媒Av在线| 91天天| 啪啪啪精品视频| 综合日本女人伊人| 日本大香蕉综合网红本杳社区| 久久欲| 国产九九久久久精品| 色网亚洲人| 天天躁日日躁AAAAXXXX国产| 久久超碰久| 老司机福利社视频在线观看| 狠狠操官网| 青青草色情网站视频| 熟女少妇视频| 婷婷五月av| 台湾佬中文娱乐网久久久久久久久久com | 97啪啪| 91男同| 久久精品国产亚洲AV高清演员表| 天天操天天射青青草| 免费超碰97久久| 人人干黄色| 夜夜操夜夜爽夜夜高潮| 去干网最新版| 91久久国产综合精品| 一起草在线视频| 男人的天堂2010| 国产精品视屏| 亚洲18禁| 亚州免费啪啪视频| 啊啊啊啊啊啊啊啊啊在线观看| 韩国一级做a久久久久| 殴美牲| 无码国产精品96久久久久孕妇| 色婷婷亚洲婷婷| 欧美—性—交—色| 激情综合五月| 精品熟女呻吟久久91| 超碰三级秋霞| 乱性AV| 97爱碰| 国产男人又猛又粗又爽| 女人香蕉久久毛毛片精品| 婷婷影院入口| 揉揉揉夜夜| 日韩啪啪网| 欧美激情综合网| 毛片17S| 91P0RNY大屁股人妻| 国产性感骚丝袜在线| 国产一级高清免费观看| 欧美精品在线观看| 日韩 欧美 视频 在线 一区| 日韩BBN| 国产欧美美女免费观看视频| 国产亚洲精品久久久久小| 综合网久久| 久久精品店| 美女黄网| 日本黄色裸日本黄色裸体 | 亚洲最大无码中文字幕网站| 熟妇女伦乱视频| 天天肏美女| 韩三级a视频在线观看| 一区二区视频你懂的| 色情乱伦AV| 91 丝袜在线播放| 亚洲视频一二区| 久久精品国产亚洲AV片多多| 老女人综合网| 本道在线| 男生女生啊啊啊啊| 婷婷综合五月天| se吧提供91精品国产91久久久久久| 亚洲欧美一区二区不卡视频播放| 久久久久成人蜜桃精品| 亚洲一区二区三区播放在线| 老熟女搡BBBB搡BBBB视频| 久久av色| 欧美人与性动交a美精品| 丰满人妻一区二区三区免费 | 久神马| 大香蕉久| 精品国产Av无码久久久亚洲| 人人摸.人人色| 风间由美日韩欧美久久| 99RE在线视频精品,这里只有精品| 多乙久久久久久| 亚洲麻豆av一区二区| 中国熟女91| 欧美另类色| 色爱三区| 18禁的网站在线| 精品免费视频国产一区| 欧美久久人体| 男人的天堂在线| 亚洲AV乱码专区国产噜噜亚洲| 粉嫩粉嫩一区性色AV片| 老熟女乱子伦中文字幕一区二区 | 国产精品蜜臀久久久久无码AV| 亚洲一区二区av| 91超碰碰在线| 天天流夜夜操| 欧美激情综合色综合啪啪五月| 亚洲无码免费看| 欧美成人性爱视频在线播放| 亚洲熟女综合网| 快播久久人人aV| 一区二区三区四区在线不卡| 97操在线| 亚洲美女色图| 午夜天堂网| 久久久com| 98色网| 日韩av乱伦| 强奸乱伦中文字幕AV| 超碰免费人妻人人| 97精品一区二区视频| 日本色日夜干| 欧美日韩*字幕一区| 欧美91精品国产自产| 日韩情色一区二区| 国产精品九九九| 加勒比海色香蕉婷婷| 青娱乐国产剧情av一区| 蜜臀无码视频在线观看| 久久午夜色播影院免费高清| 91这里只有精品| 97视频在线播放| 久久人妻熟女一区二区| 亚洲久久东京热一二三四五区视频| 伦在线97| 我想要啊 啊 啊| 色偷偷人人玩人人舔人人操人人摸人人爽| 天天激色| 国产乱码精品久久久久久| 九九九草| 本道综合精品| 91在线免费精品视频| 老熟女91| 日韩精品一区二区日韩| 午夜福利成人免费视频| 激情开心五月天| 亚洲影院小综合| 中国的操老妇女| 久草成人影片| 91人妻人人澡人人爽人人精品| 麻豆视频国产一区二区| 欧美日韩国内不卡| 超碰97欧美在线| 99久久综合| 欧美日韩中国x| 99色热| 天天射天天| 欧美极度丰满熟妇hd| 高清无码网址| 久久超碰98| 大香蕉中文201| 美女t无毒不卡不卡| 欧美极品美女aaaaaa级黄片| 亚洲无线码一区国产欧美国| 人妻天天夜夜爽一区二区| 亚洲一区二区三区麻豆传媒| 91亚洲狠狠色| 色就色综合| 操一区| 大逼色网站| 超碰色综合| 金莲网址| 欧美熟妇操操视频| 久久无码精品| 午夜福利免费福利视频| 麻豆天美久久91| 超碰69| 亚洲 欧美 精品专区 极品| 欧美日韩香蕉| 午夜欧美J进J出白浆流出久久久| 深喉吞精| 97欧美性爱| 久久最新视频免费观看| 精品97久久| 91快色色色色色| 精品国产污一区二区三区| 久久精品女同亚洲女同13| 久热影视| 天天综合网在线| 91制服丝袜中文字幕| 亚洲AV永久无码一区仙野| 91欧美偷拍| 日本大香蕉综合网| 欧美成人午夜免费福利785| 高清不卡视频| 国产精品夜夜夜| 久久九九国产精品| 超碰人妻中文在线| 日韩黄色片子| 日韩在线人妻网站| 欧洲特黄毛片免费看欧洲毛片| 18禁的网站在线| 日韩激情视频| 亚洲成人性爱网站在线播放| 嗯~啊~快点 死我视频| 操逼网站网站| 中文字幕在在线观看网站| 亚洲美腿丝袜香蕉影视欧美成人| 亚洲色系另类精品国产| 97视频在线观看高清资源| 新亚洲无码| 欧美人妻精品| 国产97av| 国产欧美伊人| 少妇厨房愉情理伦片bd在线观看| 无码人妻丰满熟妇奶水区毛片| 少妇久久久久久久| 日日黄色三级网站| 久久美女国产| 亚洲少妇自拍中文字幕懂色| 韩国黄色片精品久久久| 久久久精精精| 一区二区首页| 8x福利精品第一福利视频导航| 亚洲色图加勒比| 日本色色视频网站| 曰韩少妇无码| 天天操夜夜操| 人人爱人人乐人人操| 欧美熟妇乱码在线一区| 久久精品国产亚洲妲己影视| 中美日韩毛片| 欧美日韩性爱操大逼| 色天天野狼综合社区| 九九久久综合| 日本中文字幕不卡视频| 69丨亚洲丨精品丨入口免费播放| 久久五月天婷婷| 97天天操| 美腿丝袜偷拍亚洲欧美| 九九综合久久| 国产男女边吃边摸视频网站| 欧亚韩国999| 久久乐| 亚洲欧美一区二区网址| 91男人天堂网| 日韩素人无码一区二区三区三州| 精品人妻视频入口| 蜜臀中文无码午夜| 97超级欧美| 激情五月婷婷| 淫荡少妇免费| 亚洲97在线| 日韩午夜国产| 熟女六十路| 日韩极品无码B| 亚洲第一页色网| 久久久久久久久久久久黄色| 婷婷五月成人| 国产小黄片在线免费观看| 天天综合网~91| 欧亚成人在线视频| 亚洲情色五月天 | 伊人一区二区在线播放| 亚洲91射| 国产偷仑| 午夜精品99久久久久传媒| 欧美日韩1234| 亚洲激情综合另类| 91美女视频电影| 欧美性,色九九| 亚洲综合色网| 猛交交| 日韩欧美午夜视频在线| 精品国产三级av韩国在线| 亚洲骚男同com| 一区二区偷拍拍视频| 717影院理论午夜伦八戒| 偷拍 欧美 日韩| 亚洲丝袜少妇在线| 国产蜜臀在线| 夜夜嗨一区| 色拍偷亚洲| 狠狠搞 亚洲91| 一二三四免费视频| 国产18精品亚洲精品| 午夜寂寞欧美| 久操凹凸视频| 欧美黄片免费在线观看视频| 很很操在线| 国产乱伦搜索结果91P| 国产熟女无套内射| 999久久久九九九九| 五月天九九日国产精品一区二区三区| 午夜福利一区二区三区四区五区色婷婷| 97超碰逼| 美女主播色欲91抠b在线播放| 看看小穴| 六月丁香五月婷婷| 后X久久| 好湿好紧好爽 视频| 亚洲欧洲另类| 粉嫩国产精品久久粉嫩| 欧美色九九九| 天天做天天爱天天爽AV| 亚洲91网。| 久久亚洲天天做| 亚洲999综合| 校园春色亚洲无码| 情色五月天就去干| 丝袜美腿丝袜| 国产婷婷综合在线观看| 久久性生大片免费观看性| 精品人妻一区二区三区日产乱码| 91亚洲综合| 欧美的性爱网站免费| 日韩性爱视频在线免费观看| 在线国产福利网址导航| 一区二区三区激情在线观看| 91在线美女| 91嫩草欧美| 中文幕97| 综合熟妇一区二区三区| 91亚洲情色| 91内射| 91色人妻| 日韩中文字幕视频在线观看| 蜜桃久久综合视频| 男人的天堂色偷偷青青草视频婷婷网| 刺激精品视频| 久9综合在线| 久久久性| 激情视屏国产乱伦强奸| 天天爽天天爽| 欧美精品 - 91爱爱| 熟妇女伦乱视频视频| 热热色91| 探花一区二区三| 99无码视频| 91 丝袜在线观看| 91人人操| 国产操操日韩三级黄| 婷婷综合网站| 热久日综合| 怡红院成人视频| 日韩午夜精品一区二区三区电影| 亚洲黑丝在线| 岛国999| 久久久久久久9| 亚洲最大AV网| 欧美色66| 97在线免费看视频| 亚洲砖码砖专无区2023| 人人妻人人色| 中欧人妻丝袜中文字幕| 狠狠色狠狠色狠狠五月| 日韩丝袜人妻AV| 国产麻豆91欧美一区二区久久婷婷国产精品| 人妻色偷色噜| 九九热精品在线| 亚州欧美总和| 制度丝袜99| 91 国产丝袜在线放观看| 亚洲日韩97| 国产东北女人在线视频| 亚洲日本男人天堂网 | 欧美久久婷婷| 射久久| 亚洲国产日韩欧美熟妇在线| 超碰98综合网| 99re久久| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 青娱乐av在线| 精品夜夜澡人妻无码AV| 全免费a敌肛交毛片免费| 日本精品国产视频| 最新亚洲人成网站在线影院| 亚洲综合另类欧美久久久| 午夜精品久久久久久久第一页按摩| 高清成年美女黄网站免费大全 | 婷婷99狠狠| 黑人性欧美| 熟女人妻一区二区三区| 青青草狠狠撸| 日本东京热加勒比久久| 一区二区三区四区姦女| 插入逼91| 九一综合精品视品av| 东北女人无套内谢视频| 欧美无圣光在线| 中英熟女操女| 欧美天天综| 精品日韩人妻精品一二三区| 久久久久亚洲精品| 无码免费在线观看黄色片| 国产精品2020| 亚洲国产成人福利在线观看| 欧美天堂亚洲电影院一区在线播放 | 国产超碰人人爽人人做| 亚洲日韩资源| 久久免费精彩视频| 午夜超碰| 欧美天堂超碰97| av在线一区二区三区| 91精品久久久久久77777| 中国女人内射6XXXXX| 中文字幕一区二区三区人妻不卡| 伊人成人中文字幕久久网| 先锋女优在线观看视频| 国产高清成人传媒影视| 亚洲精品99999| 亚洲男人天堂2012| 精品国产一区二区三区香蕉欧美| 精品久久久一本一道| 欧美在线播放aaaa| 人妻久久一区二区三区 | 亚洲少妇诱惑| 夜夜天天噜狠狠爱2021| 日韩操呦呦影院在线观看| 日韩亚洲国产视频| 日日摸天天爽夜夜欢| 内射中出日韩在线观看视频| 白天啪啪晚上啪啪视频| 日本精品一区二区不卡| 歐美一級亂黃99在綫精品| wwwxxx日本爽| 激情婷婷黑人91| 青娱乐大香蕉| 99在线观看| 98人妻精品一区二区色欲| 不卡六六在线91| 97精品国产97久久久久久免费| 射久久| 国产青青美女玩逼视频| 囯产操逼片| 天天日夜干| 欧美78| 精品国产污一区二区三区| 久久综合资源一区二区| 欧洲一区二区| 97天天爽| 中文字幕国产| 亚洲综合97| 亚洲涩图欧美| 欧美天天综| 区日韩亚洲乱码av电影| 久久精品高清AV| 97香蕉网| 色97欧美| 偷拍亚洲情色| 亚洲情色在线| av优播| 亚洲精品国产av天美传媒| av在线资源| 欧美色性爱| 熟妇的味道HD中文字幕| 女色综合| 在线天堂资源亚洲| 欧美高潮| 亚洲男人的天堂在线看| 欧美天堂日韩三级国产传媒| 99视频精品| 亚洲欧美日韩精品久| 亚洲国产尤物yw在线观看| 亚洲色天| 日本大香蕉综合网| 男人的天堂在线| 欧美78| 黄色二级片网站| 六六久久日韩不卡| 婷婷四五区| 五月天综合网| 久久久久9| 综合激情五月天| 亚洲日韩成人性爱视频| 成人a大片在线观看| 啪啪视频亚洲第一| 成人av性爱电影在线观看| 色噜噜国产精品视频一区二区| 久久久中文版| 日韩欧美中文字| 99精品伊人| 少妇极品熟妇人妻无码| 加勒比av中文| 天天摸天天舔天天操| 亚洲美女色图| 青操影院| 精品十八在线观看| 天美麻豆一区二区三区| 96精品久久久久久久久久| 一起草视频在线| 日韩欧美女求操每天更新| 另类图片天天影视| 97超碰香蕉| 亚洲福利影院一区久久| 伊人丁香五月婷婷| 久久av一级av少妇av高潮| 天美91| 另类成人首页一区| 97少妇人妻中文字幕久久| www.acm成人黄色毛片| 久久 久久国内精品亚洲| 亚洲天在线| 免费视频一二三区| 高清国产精品福利网站| 国产精品一区二区手机看片| 国产AV色黄看到爽| 欧美 亚洲 偷拍自拍| 国产 码在线成人网站| 久久久人体| 动漫av中文| 97超碰中文字幕| 天天日天天看| 巨爆乳一区二区爆乳区| 亚洲成人福利电影免费| 亚洲国产欧美中日韩成人综合视频| 国产人妻精品久久久一区二区三区 | 午夜无遮挡男女啪啪视频| 强奸乱伦AV网站| 亚洲欧美中文日韩视频中国语| 69精品在线| 亚洲熟女乱综合一区二区三区| 怡红院网站在线视频| 色五月AV| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 女沟厕偷窥piss小便| 亚洲图片日本AⅤ欧美在线| 九九色逼| 内射黑人| 东京热91| 天天干夜夜操网| 国产欧美一区二区| 夜夜免费视频| 亚洲精品白浆高清久久久久久 | 日韩美女久久一区二区三区| 欧美78| 国产精品久久久久久久久久久久久久吹| av最新免费中文字幕| 婷婷五月天网| 激情综合网一盗摄| 天天干天天燥| 欧美男人一区| 欧美一区二区三区成人性生活| 色哟哟 日韩精品| 91|九色|国产熟女| 色诱avtt| 国产一级内射高清视频| 日本3级一区二区免费| 99国内精品| www.久久超碰| 毛片电影一区二区三区| 北条麻妃性愛视频| 免费a v| 亚洲情色电影网| 欧美桃色网| 综合久久久久久久综合网| 黄网站黄视频网站进入口| 天天欲望网| 欧亚性爱视频免费看| 国产精品久久久九九九| 99久久精品国产系列| 中文字幕在线高清男人的天堂| 久久久久9| 欧美人人曰人人操人人射射| 久草成人福利导航| 超碰97护士| 俺去也婷婷| 日夜精品| 91丨九色丨东北熟女| 欧美激情精品久久久| 午夜理论片在线观看免费| 69视频福利导航| 热99这里有精品综合久久| oumeisetu综合| 欧美碰碰综合色| 婷婷五月天成人网| 亚洲在线a| 激情综合网激情五月天| 97视频900| 另类一区| 91狠狠狠| 伊人亚洲国产一成人久久精品,久久| 97伦综合| 大香蕉久久| 日韩视频中文字幕| 日本美女性生活久久久久久久| 三四中文字幕| 日本淫色网| 日韩中文字墓| 日韩三级视频一区二区三区| 999精品久久久久久久| 大香蕉97久久| 两女互慰AV高潮喷水在线观看| 中文字幕制服欧美久久一区| 超清福利精品视频在线| 美日韩一二三区| 色伊人91| 男人天堂毛片| 欧洲无码一区二区| 98人妻精品一区二区色欲| 青青草精玖玖69精品| 亚洲高清综合网| 九月丁香婷婷| 欧美一区二区三区另类精品| 91美女视频电影| www狠狠| 成人26uuu| 亚洲美女黄色| 国产免费操逼| 亚洲人妻精品一区二区| 97超碰色五月| 成年人一级黄色毛片大全在线观看| 欧洲一区二区三区四区在线观看| 99热在线观看| 懂色中文一区二区三区| 欧美国产操逼| 日韩乱伦视频| 你懂的在线观看区国产 | 不卡一区二区日本视频| 神马九九九| 91狠狠综| 久久久久久十| 不卡日本一区二区| 蜜臀久久99精品久久久老,,| 五毛骚逼极品美女怕怕| 日本高清免费一本视频在线观看| 亚洲精品性爱片| 99re在线精品78| 日韩簧片免费看| 国产在线观看一区二区三区| 玖玖玖玖精品国产剧情| 91高清欧美| 男人的天堂不卡一区二区 | 亚洲 欧美 色图| 久久曰曰| 抽查国产福利主播| 人人摸.人人色| 91美女丝袜诱惑视频| 日本熟女免费視颖| 精品人妻一区二区三区在| 欧美第38页| 欧美美女自慰一区二区三区| 日本中文字幕在线视频 | 精品国产丝袜一区二区三区乱码| 九九英色视频| 99ri在线视频| 91综合色| 国内毛片四区| 欧美国产成人在线| 人妻在线中出视频| 91精品黄在线观看| aaa亚无码专区| 国产国产亚洲一二三久久| 天操天操夜操夜月操月年年操| 五月天社区| 国产欧美岛国精品一区| 91老司机视频| 国产午夜福利合集| 熟女网站最新| 高清在线偷拍自拍视频| 人人操,操人人| 黄色大片免费在线| 无遮挡一级毛片视频免费的| 中文字幕一二三| 特色a在线上| 丰满少妇精品一区二区| av线电影| 偷拍2020| 欧美一区二区三区黄色影视| 嗯嗯嗯啊啊啊干死我吧| 刺激精品视频| 99999精品成人| 一级黄碟在线观看| 亚洲精品丝袜| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 一级啊性爱在线视频| 91影库| 亚洲一级黄色毛片| 激情小说日韩无码| 99久久无码| 亚洲?V高清一区二区三区尤物| 天天做天天爱| 97超碰欧美中文字幕| 好色综合| 久久狠狠色噜噜狠狠狠狠97| 秋霞一级鲁丝片A片| 日韩无码一级黄色av片| 国产又黄又爽| 亚洲国产91精品一区二区久久| 性久久久| 乱伦系列一区二区| 91超碰人人操| 亚欧成人中文字幕一区| 国产 三级自拍| 久久艹逼视频| 少妇国产不卡| 天堂麻豆天美| 久射吧| 国产美女自拍视频| 蜜臀久久99精品久久久久久成人小说| 美女高潮国产高清| 人妻铁牛TV| 国产精品久久久久无码A√| 免费看黄视频亚洲网站| 九九色热| 精品超碰中文在线| 亚洲第一综合| 亚洲欧美九九| 人人澡综合涩| 91熟女.com| 中文字幕视频在线观看| 亚洲欧洲无码bt精品合集| 狠狠中文字幕| 天天干,夜夜爽| 久久av网| 久久精品无码一区二区三区| 97干97色| 1769一区| 操高情无码| 久久婷婷伊人| 亚洲色丰满少妇高潮| 青青草AV色| 人人操我人人干| 亚洲欧洲国产综合av| 日少妇亚洲版| 国产精品夜夜夜| 久久中文字幕一区不卡| 在免费jIzzjIzz在线视频| www国产天美久久久| 日韩av女优在线免费一区| 玖玖爱一区在线| 欧洲精品一级二级精品综合视频综合| 国产精品原创巨作?v网站| 欧美日韩成人在线| 中出789在线视频| 一区二区三| 免费强奸av| 天天综合AV| 欧美日韩中国x| 久久久久九九九九| 人人摸人人干| 久久熟女久| 乱操乱伦AV| 亚洲精品亚洲人成人网| 老熟妇一区二区三区啪啪| 色欲av国内精品久久久久久| 欧美一区二区三区日韩| 91精品国产综合久久久蜜臀| 亚洲综合贴图91 | 久久噜噜噜精品国产亚洲综合| 风月影院十八禁| 婷婷导航| 91劲爆| 精品九九九九九九| 99色热| 97超级色碰碰| 国产极品美女高潮无套在线观看| 97操97色| 1769一区| 校园春色 男人天堂| 欧美精品激情| 永久免费发布性爱网| 五月丁香六月| 国产区在线| 成人性爱av| 97欧美色资源| 欧美人人曰人人操人人射射| 六月丁操逼| 日本精品999| 亚洲综合有玛| 天天综合~91| 超碰激情808| 久操精品| 97干天天| 国产美女销魂在线观看不卡| 麻豆 亚洲 97| 国产第12页| 久久久久国产| 天堂俺去俺来也www久久婷婷| 久久人妇| 亚洲 日韩 丝袜 熟女 变态| 丁香7月婷婷| 国产精品久久久久久久毛片1| 久污| 欧美专区日本专区| 欧美91网| 色丁香五月婷婷| 人妻天天爽天天爽三区| 女色视频社区| 久久受www免费人成| 天天综合网91入口| 一级黄色性爱A级片| 使劲用力艹少妇视频一区二区| 国模艳艳啪啪一区| 欧美激色| 又大又白奶子| 蜜臀久久99精品久久久久久-DVD原版全| 亚洲熟女乱色| 国产男女边吃边摸视频网站| 9 9无尺码天堂网| 免费作爱一级视频| 欧美激情内射| 情色AV电影| 日本黄色大片一级视频免费麻豆| 久9久精品视频| AV九九| 久久久无码视频| 粉嫩AV输入| 多乙久久久久久| 欧美色图综合网| 亚洲日本男人天堂网| 久久直播国产| 国产尤物在线三区| 欧洲乱码一区二区| 久久美女国产| 在线不欧美| 操学生天天| 97操操| 国产又黄又粗又猛大片| 在线小说视频一区| 婷婷综合在线观看| 欧美劲爆视频一区二区| 91美女视频电影| 夜夜狼人妻| 中文精品一区二去| 天堂综合网| 亚洲精品美女操逼| 99婷婷| 国产欧美岛国精品一区 | 大香蕉手机视频| 黄片视频观看| 麻豆熟妇乱妇熟色A片在线看| 青娱乐亚洲热| 午夜精品视频777| 国产乱伦视频污| 青青草大香蕉视频| 91jk色拍| 96精品在线| 91c色| 自拍偷拍草一草| 亚洲欧洲日韩中文字幕一区| 97超碰免费人人性爱| 久久久婷| 综合一区中亚洲国产成人综合精品 | 国产久久视频| 一级片在线观看高清无码| 亚洲精品99999| 久久久久久无码人妻中文字幕| 人妻精品综合中文字幕在线| 任你草| japan日本高清乱xxxx| 中文字幕美女91| 上床啊啊啊| 国产后入式在线观看| 黄总AV色图| 亚洲欧美中日韩| 五月天伊人| 国产成人无码网站在线视频| 国产成人在线观看网址| 亚洲在线91| 78超碰| 97在线日韩中文字幕| 国产精品3| 人妻熟女一区二区三区在线| 99re9这里只有精品| 操91| 伊人麻豆传媒| 久久影视二区三区行押| 日本新免费二区三区| 亚洲情色第一页| 免费观看有码高清视频| 黄色性爱网网| 在线性黄高清免费视频| 亚洲国产精品V?在线播放| 青娱乐妇女性生活| 国产成人五月天丁香花| 欧美亚洲色的图| 日韩97超碰| 乱操9999| 久久久999国产精品| 999九九九九国产动| 亚洲性综合11| 成人熟女区| 狠狠躁天天躁日日躁97| 国产风韵犹存熟妇三区| 欧美大片一区二区三区| 精品欧美日韩在线观看|