PWA 面试题 目录

如何使用 Push API 实现消息推送?

推荐答案

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

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

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

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

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

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

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

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

本题详细解读

1. 注册 Service Worker

首先,我们需要注册一个 Service Worker。Service Worker 是一个在后台运行的脚本,它可以拦截网络请求、缓存资源以及处理推送通知。

2. 请求用户授权

在 Service Worker 注册成功后,我们需要请求用户授权以接收推送通知。使用 pushManager.subscribe 方法可以订阅推送服务,并生成一个唯一的 subscription 对象。

3. 将 subscription 发送到服务器

用户授权后,我们需要将 subscription 对象发送到服务器,以便服务器能够通过这个 subscription 向用户发送推送通知。

4. 在 Service Worker 中监听推送事件

当服务器发送推送通知时,Service Worker 会接收到 push 事件。我们可以在这个事件中处理推送通知,并显示给用户。

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

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

5. 将 VAPID 公钥转换为 Uint8Array

VAPID(Voluntary Application Server Identification)是一种用于推送通知的身份验证机制。我们需要将 VAPID 公钥从 Base64 格式转换为 Uint8Array,以便在 pushManager.subscribe 中使用。

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

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

  --- ---- - - -- - - --------------- ---- -
    -------------- - ----------------------
  -
  ------ ------------
-
纠错
反馈