Web 推送通知

2021-02-15 閱文前端團隊

  點擊上方藍色文字關注我們吧

聲明

本文為閱文前端團隊 YFE 成員翻譯,請尊重翻譯成果,轉載請聯繫公眾號 ( id: yuewen_YFE ) 獲取授權,並註明作者、出處和連結。

參與者(排名不分先後):任家樂、楊芯芯、劉文濤、張卓、劉鵬。

任家樂:https://github.com/jennyrenjiale

楊芯芯:https://github.com/y2x33

劉文濤:https://github.com/HSDPA-wen

張卓:https://github.com/Zhangdroid

劉鵬:https://github.com/git-patrickliu

PWA 技術的流行,給了前端許多新的能力和機會。以前很多前端做不到的事情,現在逐漸可以做到了。本系列文章講述的 Web 推送通知就是前端開發者最希望獲得的能力之一。

通過推送通知,即使用戶的瀏覽器沒有打開,我們也可以觸達用戶,讓用戶與我們的 Web 站點有更多的互動。在國外可以直接使用 Google 的推送服務進行推送,而國內也不要灰心,我們的國產瀏覽器廠商們也在補全國內的推送能力。去年 UC 就推出了國內首款支持推送通知的瀏覽器(https://www.w3ctech.com/topic/2085)。

本系列文章是翻譯自谷歌開發者網站(https://developers.google.com/web/fundamentals/push-notifications/),我們的主要目的,是讓對 Web 推送服務有興趣的開發者,能夠通過閱讀本系列的文章而初步掌握 Web 推送的一些基本原理和實現方式,從而在實際工作中可以應用起來。

文章目錄

概覽 - Web 推送通知:及時、相關和準確

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/index.md)

推送是如何工作的

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/how-push-works.md)

如何訂閱一個用戶

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/subscribing-a-user.md)

請求權限的交互

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/permission-ux.md)

通過 Web 推送庫來發送消息

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/sending-messages-with-web-push-libraries.md)

Web 推送協議(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/web-push-protocol.md)

處理推送事件

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/handling-messages.md)

顯示一個通知

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/display-a-notification.md)

通知行為

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/display-a-notification.md)

常用的通知模式

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/common-notification-patterns.md)

FAQ

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/faq.md)

常見問題以及錯誤反饋

(https://github.com/yued-fe/y-translation/blob/master/en/web-push-notifications/common-issues-and-reporting-bugs.md)

第一篇:概覽 - Web 推送通知:及時、相關和準確

原文地址:https://developers.google.com/web/fundamentals/push-notifications/index

譯文地址:https://github.com/yued-fe/y-translation/edit/master/todo/push-notifications/index.md

譯者:劉鵬

校對者:任家樂、張卓

描述:推送通知是原生 APP 中最重要的能力之一。現在 Web 也有這個能力了。為了能讓用戶充分使用它們,通知必須能夠達到及時、準確和相關。


Example Notification

如果你問一屋子的開發者,有哪些功能是行動裝置擁有而 Web 缺失的,推送通知一定位居前列。

Web 推送通知允許用戶在他們喜歡的網站一有更新之後就選擇參與進來。同時允許開發者使用自定義的以及和用戶相關的內容來有效地吸引用戶。

推送 API 和通知 API 給予了開發者一系列全新的可能性去和用戶重修舊好。

和 service worker 相關嗎?

是的,推送是基於 service worker 的,因為 service worker 在後臺負責操作。這就是說只有用戶點擊或者關掉通知的時候,相關代碼才會運行(換另一句話說就是電池被消耗)。如果你現在還對這個不熟悉,請查看 service worker introduction 章節。在後面的章節當中我們會使用 service worker 代碼給大家展示如何實現推送和通知。

兩種技術

推送和通知是使用不同但是互補的 API。推送在伺服器提供給 service worker 信息的時候被調用。通知是 service worker 或者網頁 script 展示信息給用戶的一種方式。

推送連結:https://developer.mozilla.org/en-US/docs/Web/API/Push_API

通知連結:https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API

對通知的一點剖析

在下面的章節當中,我們直接用代碼來展示如何使用通知。在 service worker 註冊完成之後,我們可以在註冊成功的 service worker 對象上調用 showNotification 方法。

serviceWorkerRegistration.showNotification(title, options);

title 參數表示的是通知的標題。 options 參數是一個對象字面量,它用於設置通知的其它屬性。options 對象通常表示如下:

{

 "body": "Did you make a $1,000,000 purchase at Dr. Evil...",

 "icon": "images/ccard.png",

 "vibrate": [200, 100, 200, 100, 200, 100, 400],

 "tag": "request",

 "actions": [

 { "action": "yes", "title": "Yes", "icon": "images/yes.png" },

 { "action": "no", "title": "No", "icon": "images/no.png" }

 ]

}

Example Notification

這些代碼將生成一個如圖所示的通知。它通常會提供和原生應用一樣的能力。在深入到實現這些能力的細節之前,我將給你們展示如何有效地使用它們。我們將繼續講述實現推送通知的機制,包括如何處理權限、訂閱、發送消息以及如何回應消息等方面。

我要怎樣才能試用它呢?

在你完全了解它們是怎麼運作或者你必須實現這些功能之前,你可以嘗試下面幾種方式來試用這些特性。

第一個是,查看 我們自己的示例

https://github.com/GoogleChrome/samples/tree/gh-pages/push-messaging-and-notifications

第二個是,Peter Beverloo 的 通知生成器

https://tests.peter.sh/notification-generator/

第三個是,Mozilla 的 推送 payload(有效載荷)示例

https://serviceworke.rs/push-payload_demo.html

提示: 除非你的頁面是 localhost, 否則的話推送 API 必須要求頁面是 HTTPS 的。

本文譯者:劉鵬

轉載請向閱文前端團隊微信公眾號 ( id: yuewen_YFE) 獲取授權,並註明作者、出處和連結。

相關焦點

  • 【第2358期】JavaScript是如何工作的:網頁消息推送通知機制
    正文從這開始~~現在讓我們把注意力轉移到網頁推送通知:我們將會查看其構建組件,探索發送/接收通知背後的過程以及最後分享一下我們在 SessionStack 是如何計劃利用這些功能來創建新的產品功能的。推送通知這一功能在移動端已經非常普遍。由於某種原因,網頁端的推送通知是千呼萬喚始出來,即使大多數開發者強烈地要求實現這一功能。
  • 「iOS 推送通知」詳解:從創建到設置到運行
    本文將帶領開發者一步一步向著iOS推送通知的深處探尋,掌握如何配置iOS推送通知的奧義。介紹一點點背景資料眾所周知,使用推送通知是一個很棒的、給應用添加實時消息通知的方式。這樣做的結局是,開發者和用戶之間,彼此永遠保持著一種令人愉悅的親密關係。
  • webhook 原理簡介
    乍一聽webhook,還挺耳生,但是想想自己之前還寫過相關的介紹文章,不如直接拿過來自己也權當複習複習」webhook是啥很多時候,我們需要監聽一些倉庫的行為,比如代碼推送或者代碼合併,通過輪詢來做嗎,那也太費勁了而且也太不優雅了,那這個 webhook 就是為了解決這個問題的。
  • 瀏覽器在Angular 5中推送通知
    有時,推送通知也稱為伺服器推送通知,因為推送通知是從設備上的應用程式傳遞的,而不需要客戶端的任何特定請求。基本上,這是拉通知和推送通知之間的基本區別:對於拉通知,客戶端必須向伺服器發送信息請求,而推送通知伺服器向客戶端發送信息,而不從客戶端收到任何請求。實際上,最終用戶必須選擇接受警報,最終用戶需要在安裝應用程式或啟動應用程式時接受該設置。
  • Leanplum:個性化推送通知比普通推送打開率高4倍
    推送通知是對抗放棄應用的有效工具,也是一個有效的營銷渠道。根據移動營銷平臺Leanplum的調查,通過部署個性化推送通知營銷人員提高通知打開量。Leanplum調查發現特定的個性化推送通知打開率能增加800%。
  • SEO利器 - 網頁內容監控之百度自動推送
    經常做SEO的站長都知道,百度主動推送對SEO的幫助是巨大的。百度主動推送即將網站內容主動推送到百度站長平臺數據推送接口,百度主動推送可縮短爬蟲發現網站連結時間,網站時效性內容建議使用連結提交工具,實時向搜索推送數據。
  • 什麼是Web?Web Service、Web API傻傻分不清楚?
    至於REST是什麼,那就敬請期待微信公眾號後續的文章推送了。英文原文What is the Web?considered a SMALL web.If a web server provides computing power resources, which means the web client can invoke the computing power on the web server remotely, and the web server will respond with the computing result
  • 安卓推新版Chrome 增網頁通知推送功能
    比如,谷歌Chrome Beta 42新增了兩個新的API,可以讓網站向用戶發送通知,即便是瀏覽器是關閉的。想要獲得通知推送功能,開發者需要Push API 輔助功能,用戶也將會在通知上看到一個「站點設置」選項。目前,蘋果OS X系統上的Safari瀏覽器已經支持通知功能,不過行動作業系統iOS還不支持。
  • web3.eth.subscribe
    通知返回Mixed - 取決於訂閱,請參閱不同的訂閱了解更多信息。示例var subscription = web3.eth.subscribe('logs', {    address: '0x123456..',    topics: ['0x12345...']
  • 百度主動推送有用嗎?如何自動做百度主動推送?
    百度主動推送有用嗎?這是很多站長朋友的心聲,WEB視界在這裡為大家詳細介紹百度主動推送的作用,讓大家清楚明白百度主動推送到底有沒有用。首先我們需要知道的是百度官方既然放出了這個推送渠道,那肯定就是有用的。
  • Gitee 現已增加 WebHook 對企業微信的支持 - OSCHINA - 中文開源...
    為了方便用戶在第三方平臺接收到 Gitee 的推送,Gitee 推出了 Webhook 功能,此前你已經可以通過
  • 一文搞懂互金產品消息推送設計策略
    因此本文將開始重點闡述互金產品消息推送的類別、場景、方式和前後端推送設計策略以及運營策略。1 定義本文所指的「互金產品」主要指各種理財投資終端,(包含移動客戶端和web端)。推送的「消息」形式不僅是指通知欄push和簡訊,更包含了應用內消息、郵件、微信通知等多種形式或載體。
  • 蘋果手速夠快:已推送iOS 14.2測試版
    來源:新浪VR蘋果這操作有些太迅速了,iOS 14正式版才開始推送,iOS 14.2都來了。其他新功能還包括應用程式庫、來電/Facetime以小窗形式通知、免下載使用應用程式、11中語言的翻譯軟體、自帶地圖可進行自行車導航、汽車鑰匙功能等。
  • 如何使用 Spring + WebSocket + Quartz 實現消息定時推送?
    推送和拉取的區別?推:由伺服器主動發消息給客戶端,就像廣播。優勢在於,信息的主動性和及時性。實現消息通信的幾種方式?接下來我們主要講第三種,使用websocket協議,來實現服務端定時向客戶端推送消息。
  • GrayLog配置SSH暴力破解攻擊日誌告警並推送到釘釘機器人
    點擊上方"walkingcloud"關注,並選擇"星標"公眾號GrayLog配置SSH暴力破解攻擊日誌告警並推送到釘釘機器人
  • Worktile中百萬級實時消息推送服務的實現
    在團隊協同工具 Worktile的使用過程中,你會發現無論是右上角的消息通知,還是在任務面板中拖動任務,還有用戶的在線狀態,都是實時刷新。Worktile中的推送服務是採用的是基於XMPP協議、Erlang語言實現的Ejabberd,並在其源碼基礎上,結合我們的業務,對源碼作了修改以適配我們自身的需求。
  • ...Windows 剪貼板……把 iOS 推送通知玩出花樣:Bark | App+1
    如果你可以輕鬆將任何信息推送到你的手機,你會用來做些什麼呢?今天介紹的 Bark 就可以讓你擁有這樣的能力。不同於 Pushover 這樣的推送服務,Bark 是完全免費且開源的,我們甚至可以在自己的伺服器上搭建 Bark 服務端以安全地推送敏感信息。自定義推送內容運行 Bark 後,我們會在應用內看到許多連結,它們均以  為格式。
  • 派位通知正在推送,襄城樊城報到時間是......
    襄陽市義務教育招生平臺發布「派位通知」今日開始陸續分批推送目前,市二十中七年級新生已經收到了派位通知。各位家長請關注平臺首頁「進度」或者「消息」及時查看「派位通知」
  • iOS10 推送必看(基礎篇)
    經過測試,我發現是可以正常收到推送信息的。測試的方法如下,大家也可以測試一下。測試方法:打包之後安裝ipa文件,然後利用極光推送,選擇生產環境,推送,即可。經過上面的操作,你就會驚奇的發現,推送已經適配完畢了,iOS10的系統,已經可以正常接收通知了。
  • Secret推出一款通知工具Ping,主打內容推送
    該產品是一款簡單的通知工具,可以將你想要知道的內容推送到鎖屏設備產品上,且使用當前流行的滑動設計展示新內容,但此滑動不是從右往左滑,而是使用應用右上角的圓點「Portal」,往對角線的方向拖開,顯示新內容。Secret設計師Ben Lee介紹稱,我們在設計產品時,更多地強調用戶界面而非內容本身。