当前位置:首页 > JavaScript

js实现推送

2026-03-14 05:17:40JavaScript

实现 Web 推送通知的方法

使用 JavaScript 实现推送通知主要依赖浏览器的 Push APINotification API。以下是具体实现步骤:

注册 Service Worker

Service Worker 是推送通知的核心,用于在后台接收推送消息。

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js')
    .then(registration => {
      console.log('ServiceWorker 注册成功');
    });
}

请求用户授权

需要用户授权才能显示通知。

Notification.requestPermission().then(permission => {
  if (permission === 'granted') {
    console.log('用户已授权通知');
  }
});

订阅推送服务

通过 PushManager 订阅推送服务,获取推送订阅对象。

navigator.serviceWorker.ready.then(registration => {
  return registration.pushManager.subscribe({
    userVisibleOnly: true,
    applicationServerKey: '你的应用服务器公钥'
  });
}).then(subscription => {
  console.log('推送订阅成功:', subscription);
});

发送推送消息

服务器通过 Web Push 协议向推送服务发送消息,Service Worker 接收并显示通知。

self.addEventListener('push', event => {
  const payload = event.data.json();
  event.waitUntil(
    self.registration.showNotification(payload.title, {
      body: payload.body,
      icon: 'icon.png'
    })
  );
});

处理通知点击事件

用户可以点击通知触发特定动作。

js实现推送

self.addEventListener('notificationclick', event => {
  event.notification.close();
  event.waitUntil(
    clients.openWindow('https://example.com')
  );
});

注意事项

  • HTTPS 要求:推送通知仅在 HTTPS 或 localhost 环境下可用。
  • 浏览器兼容性:检查 Push API 和 Notification API 的浏览器支持情况。
  • 服务器配置:需配置应用服务器公钥(VAPID 密钥)以验证推送请求。

通过以上步骤,可以实现基本的 Web 推送通知功能。

标签: js
分享给朋友:

相关文章

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…