如何将推送通知集成到您的 PWA 中
已发表: 2021-04-28目录
在我们今天的教程中,我们将使用 Firebase 将推送通知集成到 PWA 中,或者更具体地说,使用其中的云消息传递功能,该功能支持使用 HTTPS 请求发送消息。
渐进式 Web 应用程序和推送通知
由于 Progressive Web App 是一个不断变化的运动,因此看到该技术本身已经与它的本地应用程序对等(功能方面)就不足为奇了。
推荐阅读:PWA vs Native:哪个更适合你?
通知触发器使开发人员能够安排通知,即使用户的设备处于飞行模式。
Jon Krafcik,2019 年 Chrome 开发者峰会

有了所有这些根本性的变化,如果不利用它为 PWA 带来更多收入,那将是一种浪费。 它甚至不是太复杂的东西,因为您可以使用本教程轻松设置自己的推送通知功能。
推荐阅读:电子商务渐进式 Web 应用程序 (PWA) 的 9 个必备功能
如何将推送通知集成到您的 PWA 中
在我们今天的教程中,我们将使用Firebase将推送通知集成到 PWA 中,特别是其中的云消息传递功能,它可以使用 HTTPS 请求发送消息。
先决条件
- 一个 Firebase 帐户(因为您将在 Firebase 中创建一个项目)
- 渐进式 Web 应用程序。 为了简化演示,我们将使用 create-react-app,它是可以使用命令创建的基本 PWA

第 1 步:创建基本 PWA
由于我们将使用 create-react-app 创建一个基本的 PWA,让我们先下载 NodeJS。 安装完 NodeJS 后,打开NodeJS 命令提示符并运行以下命令。
在您指定的目录中创建一个简单的 React 应用程序:
npx create-react-app your-pwa-directory
将当前工作目录更改为您新创建的 React 应用程序:
cd 你的 pwa 目录
将 Firebase JavaScript 库添加到项目中:
npm install firebase --save

第 2 步:创建您的push-notification.js
下一步是创建负责所有通知处理的模块。 在<your-pwa-directory>\src
中,创建一个名为push-notification.js
的文件。
首先,让我们创建一个初始化 Firebase 并传递项目密钥的函数。 您可以通过进入 Firebase > 项目概述 → 项目设置并单击此图标来找到项目的密钥:

这会将您定向到另一个包含 PWA 的 Firebase SDK 的页面:

现在我们有了项目的密钥,让我们将以下代码添加到您的push-notification.js
中。
从'firebase'导入firebase; 导出 const initializeFirebase = () => { firebase.initializeApp({ apiKey: "XXXXXXXXXXXX", authDomain: "XXXXXXXXXXXX", 数据库URL:“XXXXXXXXXXXXX”, 项目ID:“XXXXXXXXXXXX”, storageBucket: "XXXXXXXXXXXX", messagesSenderId: "XXXXXXXXXXXX", appId:“XXXXXXXXXXXX” }); }
有了这个,您已经创建了负责所有通知处理的函数,您现在需要导入并调用它。 像这样编辑你的index.js
:
从“反应”导入反应; 从 'react-dom' 导入 ReactDOM; 导入'./index.css'; 从'./App'导入应用程序; 从 './serviceWorkerRegistration' 导入 * 作为 serviceWorkerRegistration; 从'./reportWebVitals'导入reportWebVitals; 从'firebase'导入firebase; 从'./push-notification'导入{initializeFirebase}; ReactDOM.render(<App />, document.getElementById('root')); 初始化Firebase();
第 3 步:创建服务工作者
Service Workers 是 Progressive Web App 背后的技术名称,它支持其离线功能、推送通知和资源缓存。
SimiCart,所有你需要知道的关于渐进式 Web 应用程序
接收onMessage
事件需要服务工作者,因此允许将通知发送到用户的设备。 默认情况下,Firebase 会自动查找名为firebase-messaging-sw.js
的文件。

让我们将firebase-messaging-sw.js
添加到提供文件的目录中。 由于我们是一个create-react-app
项目,这个firebase-messaging-sw.js
将进入我们的公共文件夹:
importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-app.js'); importScripts('https://www.gstatic.com/firebasejs/8.4.1/firebase-messaging.js'); firebase.initializeApp({ apiKey: "XXXXXXXXXXXX", authDomain: "XXXXXXXXXXXX", 数据库URL:“XXXXXXXXXXXXX”, 项目ID:“XXXXXXXXXXXX”, storageBucket: "XXXXXXXXXXXX", messagesSenderId: "XXXXXXXXXXXX", appId:“XXXXXXXXXXXX” }); 常量消息 = firebase.messaging();
如果您还没有听说过 PWA Service Worker,我们有一篇独家文章供您了解有关这项惊人技术的所有信息。
第 4 步:请求用户权限以发送通知
这是隐私的时代,您不想通过发送不需要的和未经授权的通知来惹恼您的用户!
要请求您的用户的许可,只需将其添加到您的push-notification.js
:
从'firebase'导入firebase; 导出 const initializeFirebase = () => { firebase.initializeApp({ apiKey: "XXXXXXXXXXXX", authDomain: "XXXXXXXXXXXX", 数据库URL:“XXXXXXXXXXXXX”, 项目ID:“XXXXXXXXXXXX”, storageBucket: "XXXXXXXXXXXX", messagesSenderId: "XXXXXXXXXXXX", appId:“XXXXXXXXXXXX” }); } 导出 const askForPermissionToReceiveNotifications = async () => { 尝试 { 常量消息 = firebase.messaging(); 等待消息传递.requestPermission(); 常量令牌 = 等待消息传递.getToken(); console.log('你的令牌是:', token); 返回令牌; } 捕捉(错误){ 控制台.错误(错误); } }
因为这个函数需要从某个地方调用,所以我们只需点击一个按钮就可以添加它。 编辑/src/目录中的app.js
文件,如下所示:
从'./logo.svg'导入标志; 导入'./App.css'; 从'./push-notification'导入{ askForPermissionToReceiveNotifications }; 函数应用程序(){ 返回 ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> <p> 编辑 <code>src/App.js</code> 并保存以重新加载。 </p> <一个 className="应用链接" href="https://reactjs.org" 目标="_空白" rel="noopener noreferrer" > 学习反应 </a> <button onClick={askForPermissionToReceiveNotifications} > 点击接收通知 </按钮> </标题> </div> ); } 导出默认应用程序;
现在让我们开始我们的项目,你应该会看到一个点击接收通知按钮,如下所示:

单击按钮,您应该会看到一个弹出窗口,请求您的许可:

单击允许并检查浏览器的控制台。 您应该会看到一条消息,通知您您的令牌:

现在将此令牌保存在其他地方,因为您将在下一步中需要它。
第5 步:使用 Postman 发送推送通知
在接下来的步骤中,我们将使用 Postman 通过 Firebase 的云消息服务发送通知。
在 Postman 中,使用以下信息创建一个POST请求:
- 请求网址:https://fcm.googleapis.com/fcm/send
- Headers :在 POST 请求的标头中,您需要具有以下键:
授权: key= SERVER_KEY
内容类型:应用程序/json

注意: SERVER_KEY
可以在 Firebase 设置中的Cloud Messaging选项卡下找到
- Body :使用以下代码填充 POST 请求的正文:
{ “通知”: { "title": "SimiCart", "body": "测试推送通知", "click_action": "http://localhost:3000/", “图标”:“https://i.imgur.com/5zO5cce.png” } “到”:“USER_TOKEN” }
将USER_TOKEN
替换为您在第 4 步中获得的令牌(通过单击Click to receive notifications 按钮)。不要忘记将 Body type 选择为raw和JSON 。

现在单击发送,您应该会在右下角看到一条通知弹出:

注意:这些通知仅在应用程序处于后台或最小化时出现。
恭喜! 你的 PWA 现在可以发送通知了!
结论
我们希望在本指南之后,您现在可以自信地设置自己的推送通知功能。 作为一项新技术,Progressive Web Apps 对于不精通技术的用户来说肯定是一件复杂的事情,这就是为什么有现成的解决方案提供商(例如 SimiCart)可以凭借我们多年的 PWA 经验来满足您的所有需求。