如何利用 PWA 实现 Web 应用的本地推送通知

在Web应用中,我们经常需要推送一些通知,以便让用户及时得知某些事件的发生,比如订单状态变化、社交消息、新闻资讯等。而PWA(Progressive Web App)技术,提供了一种比传统Web应用更贴近原生应用的体验,可以实现在不同平台下的本地推送通知。本文将介绍如何利用PWA实现Web应用的本地推送通知。

什么是 PWA?

PWA是一种方式,可以让Web应用更像原生应用,具有如下特点:

  • 渐进式增强:渐进式改进Web应用,更容易适配不同的设备和浏览器,无需下载安装。
  • 可发现:可以被搜索引擎索引,易于用户找到。
  • 可安装:用户可将Web应用添加到桌面或应用列表中。
  • 可托管:使用HTTP/S协议升级代码库并为用户提供更好的访问性能。
  • 可再现:可以打开或离线使用,具有可处理的状态和动作。
  • 可链接:可以通过链接短信或在应用里共享,而无需下载或安装。

PWA 实现本地推送通知

PWA在浏览器中使用Service Worker,可在后台单独处理应用程序逻辑。Service Worker在注册后由浏览器独立于Web应用程序驻留。这使Service Worker产生了一种与Web页面隔离的感觉。由于Service Worker完全脱离Web应用程序运行,所以可以在不打开Web应用程序的情况下触发本地推送消息。

实现步骤

1.注册Service Worker

在index.html添加以下代码,用于在浏览器中注册Service Worker:

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

2.编写Service Worker

在准备好了Service Worker后,就可以开始实现消息推送功能了。下面是一个简单的Service Worker,将会在浏览器通知面板中推送一条消息。

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

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

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

当推送到达时,Service Worker将触发 push 事件。回调中的 event 包含推送的数据,以及通知的标题和消息内容。然后通过 showNotification 方法在浏览器通知面板中展示通知。

3.请求推送权限

在Service Worker中,只有在用户明确允许之后才能推送通知。所以,我们需要在Web应用程序中注册一个请求推送通知的推送管理者,然后引导用户授予我们推送提醒的权限。我们在 scripts/main.js 文件中使用以下代码:

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

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

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

在上面的代码中,首先判断浏览器是否支持通知。如果支持,就查看是否已经授予权限,如果未授予权限则弹出窗口请求授权。授权后即可实现推送消息通知。

PWA 推送通知示例代码

下面是一个完整的基于 PWA 实现网站推送通知的代码,包含 Service Worker 和注册推送通知的 JavaScript:

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

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

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

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

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

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

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

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

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

总结

在本文中,我们了解了如何利用PWA实现Web应用本地推送通知。我们可以通过注册Service Worker,在后台运行代码,并在静默的情况下将消息推送到浏览器通知面板中。本文介绍了PWA推送通知的实现步骤,并给出了完整的示例代码,希望对你有所帮助!

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64e9735df6b2d6eab34bcfec


猜你喜欢

  • 使用 ES6 的 Array.from() 解决类数组对象转为数组问题

    在前端开发中,有时候我们会遇到将类数组对象转化为数组的问题。这种情况一般出现在需要对 DOM 元素进行操作,或者使用类似 arguments 这样的对象时。在 ES6 之前,我们通常会使用 Array...

    1 年前
  • 在 Jest 中使用 JSDOM 进行 DOM 操作

    在 Jest 中使用 JSDOM 进行 DOM 操作 Jest 是一款非常流行的前端测试框架,它不仅提供了优秀的测试工具链,而且还是一款非常快速、易于使用的工具。与之类似,JSDOM 是一个非常实用的...

    1 年前
  • Enzyme 测试 React 组件如何进行 Mock 处理

    Enzyme 测试 React 组件如何进行 Mock 处理 前言 在前端开发中,React 组件的测试是非常重要的。而 Enzyme 是 React 组件的一个测试工具,它可以让我们更方便地执行各种...

    1 年前
  • ES11 新特性:优雅地使用 Optional catch Binding 防范运行时异常

    在开发 Web 应用时,我们常常需要添加异常处理机制,以保证程序在出现错误时能够正常运行。然而,在处理异常的过程中,常常出现一些问题,比如异常处理的代码容易耦合在一起,或者我们无法知道哪些错误是需要捕...

    1 年前
  • 从零开始搭建 React + Redux + PWA 应用

    React 是当前最流行的前端框架之一,它的设计思路和生态系统都非常优秀,使得以它为核心的复杂应用也能够方便地开发和维护。Redux 是一种基于 Flux 架构的状态管理工具,能够让我们更好地管理组件...

    1 年前
  • 实现自定义的 Promise 实例

    Promise 是 JS 常用的异步编程解决方案之一,它可以让代码更加优雅地处理异步操作,避免了回调地狱。本文将介绍如何实现自定义的 Promise 实例。 Promise 基本原理 Promise ...

    1 年前
  • Web Components 实战:从 0 到 1 实现一个组件库

    Web Components 实战:从 0 到 1 实现一个组件库 随着前端技术的不断发展,我们越来越意识到组件化开发的重要性。Web Components 是一个基于标准化的组件化方案,它能让我们创...

    1 年前
  • SASS 函数库的使用方法

    在前端开发中,使用 SASS 可以让编写样式更加高效、方便、简洁。而 SASS 函数库则提供了更多的工具,让我们能够更加轻松地开发出复杂的样式。 安装 SASS 函数库 要使用 SASS 函数库,首先...

    1 年前
  • Express.js 结合 MySQL 实现注册登录及用户信息查询

    随着互联网的发展,Web 应用程序成为了越来越多人使用的工具。作为 Web 应用程序的核心架构之一,前端技术越来越重要。Express.js 是一种流行的 Node.js 框架,它简化了 Web 应用...

    1 年前
  • Custom Elements:如何为自定义元素添加动画效果?

    随着 Web 技术的不断进步,自定义元素(Custom Elements)已经成为了开发 Web 应用程序的有力工具。自定义元素允许开发者创建新的 HTML 标签,并赋予其新的行为和功能。

    1 年前
  • 如何使用 Webpack 应对 fontawesome 字体库的加载问题

    在前端开发中,字体图标是一个非常常见的元素。FontAwesome 是一个非常流行的字体图标库,在实际使用中,也会遇到一些问题。这篇文章将介绍如何使用 Webpack 解决 FontAwesome 字...

    1 年前
  • PM2+nginx+node.js 实现 Node 集群负载均衡

    随着互联网应用的不断发展,高并发、高可用已经成为了一个越来越普遍的需求。而 Node.js 作为一种高性能、高并发的 web 开发语言,也越来越受到开发者的青睐。 当一个 Node.js 应用面临着大...

    1 年前
  • Mocha 测试框架中如何实现 Stubbing

    在前端开发中,测试是不可或缺的一环,而 Mocha 是一个流行的 JavaScript 测试框架。它支持多种测试样式,包括 BDD 和 TDD。但有时候,我们测试需要在某些情况下提供一个假的返回值或者...

    1 年前
  • RESTful API的松散耦合性理解

    RESTful API是现代前端应用架构的核心。它具有良好的松散耦合性,使得开发人员能够更轻松地实现前端与后端之间的协作和数据交换。 什么是RESTful API? RESTful API是一种基于R...

    1 年前
  • 使用 Web Components 构建 SPA 的好处

    Web Components 是一种用于创建可重用的自定义 HTML 元素的技术。它是一个由浏览器原生支持的标准,可以使用HTML、CSS 和 JavaScript 实现。

    1 年前
  • Headless CMS 的品牌价值和内容价值

    什么是 Headless CMS? Headless CMS 是一种新兴的内容管理系统。与传统 CMS 不同,Headless CMS 剥离了前端和后端的耦合,将前端与后端分离开来,使得内容管理系统只...

    1 年前
  • 使用 Hapi 创建 WebSocket 服务器

    最近,在 Web 开发中使用 WebSocket 已经变得越来越常见,因为它可以为许多用例提供极佳的解决方案,例如实时聊天、实时游戏状态、推送通知等等。 Hapi 是一个非常受欢迎的 Node.js ...

    1 年前
  • Sequelize 操作 MySQL 时遇到的错误及解决方案

    在前端开发中,Sequelize 是一种基于 Node.js 实现的 ORM(Object Relational Mapping)工具,它可以让我们方便地操作各种数据库,其中包括 MySQL。

    1 年前
  • ECMAScript 2018:新增静态方法 Object.entries()

    在 ECMAScript 2018 中,新增了一个静态方法 Object.entries(),该方法用于返回一个对象的可枚举属性的键值对数组。该方法可以用于对象解构,对象遍历和对象转换等场景,具有深度...

    1 年前
  • ES10 的 Object.values() 和 Object.entries() 方法使用详解

    ES10 的 Object.values() 和 Object.entries() 方法使用详解 ES10 作为 JavaScript 最新的语言标准,引入了许多新的功能和 API。

    1 年前

相关推荐

    暂无文章