如何在 PWA 中使用 Web Push Notification?

阅读时长 6 分钟读完

Web Push Notification 是一种基于浏览器的消息推送系统,它可以让网站的用户在浏览器关闭的情况下,也能够接收到站内提醒。这对于 PWA 应用来说,是一种非常实用的功能,能够提高用户的体验度,增强用户的黏性。

本文将介绍如何在 PWA 应用中,使用 Web Push Notification。你将学到如何操作 service worker,如何使用 web push API 和如何处理推送事件。

1. 准备工作

在开始之前,我们需要准备好一些必要的条件:

  • 一个支持 HTTPS 的网站
  • 一个服务端
  • 一个 VAPID 公钥/私钥对

其中,HTTPS 是必要的条件,因为 Web Push Notification 只在 HTTPS 网站中工作。服务端通过推送 API 将消息发送给浏览器,VAPID 公钥/私钥对是用于身份认证的。

2. 注册 Service Worker

Service Worker 是 Web Push Notification 的基础,它可以让我们在用户离线时依然能够接收到消息。我们需要在 PWA 应用中注册 service worker,并且监听 push 事件。

-- -------------------- ---- -------
------------------------------------------------------
---------------------------- -
    -------------------- ------ ------------ ------------ -------------
    
    ------------------------------------
        ---------------- -----
        --------------------- --------------------------------
    --
    ---------------------------- -
        ----------------- -- ------------- --------------
    ---
--
---------------------- -
    -------------------- ------ ------------ --------- -------
---

上述代码中,我们注册了一个 service worker,并向其订阅 push 事件。订阅时,我们需要指定 applicationServerKey,它是 VAPID 公钥的二进制格式。

3. 向服务端发送 Push Subscription 对象

当我们订阅 Push 事件后,浏览器会生成一个 Push Subscription 对象,它包含了一些必要的信息,如 endpoint,auth 和 p256dh 等。我们需要将该对象发送到服务端,以便服务端向浏览器发送消息。

4. 向推送服务器发送消息

在得到 Push Subscription 对象后,我们可以向推送服务器发送消息。推送服务器有 Google Cloud Messaging,Mozilla Notification Group 等,我们可以根据自己的需要选择。

以下是向 Mozilla Notification Group 发送消息的示例代码:

-- -------------------- ---- -------
----- -------- - ----------------------
----- ---- - -----------------------
----- ------ - -------------------------
----- --------------------- - -------------- -- -
    ----- ------- - ------------- - ------------------- - -- - ---
    ----- ------ - ------------- - --------
        -------------- ----
        -------------- -----
    ----- ------- - --------------------
    ----- ----------- - --- ---------------------------
    --- ---- - - -- - - --------------- ---- -
        -------------- - ----------------------
    -
    ------ ------------
--

----- ------- - -
    ------ ---------
    ----- --- -------
--

----- ------- - -
    --------------- -------------------
    ---------------- -------- -----------------------------
--

----- ---- - ----------------
    ------------- -
        ------ --------------
        ----- -------------
        ----- -----------
    --
    ---------- --------
---

---------------------------------------------------------- -
    ------- -------
    -------- --------
    ----- ----
---------------- -- -
    ----------------------
-------------- -- -
    -------------------
---

5. 处理推送事件

当浏览器接收到消息时,会触发 push 事件,我们需要在 service worker 中监听该事件,并做出响应。

以下是处理推送事件的示例代码:

-- -------------------- ---- -------
----------------------------- --------------- -
    ----------------- ----------- -------

    ----- ----- - ---------
    ----- ------- - -
        ----- ------------------
        ----- -----------
    --

    --------------------------------------------------------- ----------
---

上述代码中,我们监听了 push 事件,并在收到消息后,通过 showNotification 方法展示消息。

6. 总结

本文介绍了如何在 PWA 应用中使用 Web Push Notification。虽然实现过程中有一些繁琐的细节,但理解了基本原理后,我们还是可以很容易地实现该功能。Web Push Notification 能够提高用户体验度,增强 PWA 应用的黏性,是一种非常实用的功能。如果你的应用还没有添加该功能,不妨试一试吧!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c286c183d39b48816807a9

纠错
反馈