推播通知不管对 App 或是网站来说都是一种重新吸引用户来使用 App 的方法,所以目标是即使网站、App 关闭时也要能在背景接收推播。推播的目的是为了增加 engagement,在行销领域中 engagement 这个常见的指标就是指用户在网站或 APP 上的互动程度或者参与度。
在还没实际看教学文件前,会发现如果要从零开始依照推播协议的标准开始实作流程是相对复杂:
再来就是触发推播如果遇到问题,会较困难去排除问题。当然随着开发者工具的进步会慢慢改善,但还是建议使用现成的套件工具来处理推播,Google 提供的 Firebase 就是不错的方案,如果还是想要体验自行实作,也可以使用 web-push 这个套件,来缩短开发时间。
接下来就来示范用 web-push 实作推播服务器的主要步骤:
可以发现如果是使用套件,底层标准的部分就都不需要实作,可以着重在商业逻辑的开发,透过 node.js 最简单的版本推播实作程序码如下:
const express = require("express");
const webPush = require("web-push");
const app = express();
const webPush = require("web-push");
// 1. 透过现有的推播套件配置相关的 VAPID 金钥对
const publicVapidKey = process.env.PUBLIC_VAPID_KEY;
const privateVapidKey = process.env.PRIVATE_VAPID_KEY;
webPush.setVapidDetails(
"mailto:[email protected]",
publicVapidKey,
privateVapidKey
);
// 2. 建立一个 API 接收网页的订阅请求
app.post("/subscribe", (req, res) => {
// 收到订阅请求
const subscription = req.body;
res.status(201).json({});
const payload = JSON.stringify({
title: "推播讯息内容",
});
// 3. 从透过推播套件从後端针对刚刚的订阅请求推播消息
webPush
.sendNotification(subscription, payload)
.catch((error) => console.error(error));
});
如果需要进阶一点的使用,可以多实作更多相关逻辑:
const subscription = req.body;
储存起来,方便後续进阶操作/subscribe?device=android&time=morning
这次小编其实在後端也没有多做复杂的处理,目的是为了测试关闭页面後仍然可以推播,所以补上了一分钟後再多送一次的逻辑。
这次的 Demo 连结如下也欢迎各位大大试玩看看:
https://linyencheng-push-notification.herokuapp.com/
setTimeout(() => {
webPush
.sendNotification(subscription, payload30)
.catch((error) => console.error(error));
}, 60 * 1000);
今天文章的内容是Sum(总和)跟Value Count(数量计算) 今天的示范资料 Sum Sum大...
前言 DevOps 是一种理念,目的是让开发到发布的速度、稳定性都能提升。 而 CI/CD 是实践 ...
今天在IIS上安装的PHP发生了错误,可是一直出现 500-内部服务器错误,这样会看不到正确的错误内...
嘿各位,今天要说的是 JavaScript 的变数宣告 为什麽昨天说像变魔法呢~ 因为只要使用变数宣...
Autoload PHP 可以透过 include、include_once、require、req...