如何将推送通知集成到您的 PWA 中

已发表: 2021-04-28

目录

在我们今天的教程中,我们将使用 Firebase 将推送通知集成到 PWA 中,或者更具体地说,使用其中的云消息传递功能,该功能支持使用 HTTPS 请求发送消息。

渐进式 Web 应用程序和推送通知

由于 Progressive Web App 是一个不断变化的运动,因此看到该技术本身已经与它的本地应用程序对等(功能方面)就不足为奇了。

 推荐阅读:PWA vs Native:哪个更适合你?

通知触发器使开发人员能够安排通知,即使用户的设备处于飞行模式。

Jon Krafcik,2019 年 Chrome 开发者峰会
推送通知触发器 - 2019 年 Chrome 开发者峰会
Chrome 80 中的新功能,通知触发器即使在飞行模式下也能启用通知

有了所有这些根本性的变化,如果不利用它为 PWA 带来更多收入,那将是一种浪费。 它甚至不是太复杂的东西,因为您可以使用本教程轻松设置自己的推送通知功能。

 推荐阅读:电子商务渐进式 Web 应用程序 (PWA) 的 9 个必备功能

如何将推送通知集成到您的 PWA 中

在我们今天的教程中,我们将使用Firebase将推送通知集成到 PWA 中,特别是其中的云消息传递功能,它可以使用 HTTPS 请求发送消息。

先决条件

  • 一个 Firebase 帐户(因为您将在 Firebase 中创建一个项目)
  • 渐进式 Web 应用程序。 为了简化演示,我们将使用 create-react-app,它是可以使用命令创建的基本 PWA
PWA 推送通知:创建 Firebase 项目
使用 Firebase 创建项目

第 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 
安装 Firebase

第 2 步:创建您的push-notification.js

下一步是创建负责所有通知处理的模块。 在<your-pwa-directory>\src中,创建一个名为push-notification.js的文件。

首先,让我们创建一个初始化 Firebase 并传递项目密钥的函数。 您可以通过进入 Firebase > 项目概述 → 项目设置并单击此图标来找到项目的密钥:

用于 PWA 推送通知的 Firebase SDK

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

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

正确配置 Authorization 和 Content-Type

注意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 选择为rawJSON

邮递员身体

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

测试推送通知结果

注意:这些通知仅在应用程序处于后台或最小化时出现。

恭喜! 你的 PWA 现在可以发送通知了!

结论

我们希望在本指南之后,您现在可以自信地设置自己的推送通知功能。 作为一项新技术,Progressive Web Apps 对于不精通技术的用户来说肯定是一件复杂的事情,这就是为什么有现成的解决方案提供商(例如 SimiCart)可以凭借我们多年的 PWA 经验来满足您的所有需求。

探索 simicart PWA