当前位置:首页 > React

react如何实现手机通知

2026-03-10 21:35:36React

使用浏览器通知 API

React 可以通过浏览器的 Notification API 实现通知功能。该 API 允许网页在获得用户授权后发送桌面或移动设备通知。

示例代码:

import React, { useEffect } from 'react';

const NotificationComponent = () => {
  useEffect(() => {
    if ('Notification' in window) {
      Notification.requestPermission().then(permission => {
        if (permission === 'granted') {
          new Notification('Hello!', {
            body: 'This is a notification from React.',
            icon: '/path/to/icon.png'
          });
        }
      });
    }
  }, []);

  return <div>Check notification permission</div>;
};

export default NotificationComponent;

注意事项:

  • 通知仅在 HTTPS 或本地开发环境(localhost)生效。
  • 需要用户主动授权,通常建议在用户交互(如按钮点击)后触发请求。

使用第三方推送服务(如 Firebase Cloud Messaging)

对于移动端推送(包括锁屏通知),可以通过 Firebase Cloud Messaging (FCM) 实现。

实现步骤:

  1. 注册 Firebase 项目:在 Firebase 控制台 创建项目并配置 Web 应用。
  2. 安装 Firebase SDK
    npm install firebase
  3. 初始化 FCM 并请求权限
    
    import { initializeApp } from 'firebase/app';
    import { getMessaging, getToken, onMessage } from 'firebase/messaging';

const firebaseConfig = { apiKey: "YOUR_API_KEY", projectId: "YOUR_PROJECT_ID", messagingSenderId: "YOUR_SENDER_ID", appId: "YOUR_APP_ID" };

const app = initializeApp(firebaseConfig); const messaging = getMessaging(app);

// 请求通知权限并获取设备令牌 getToken(messaging, { vapidKey: 'YOUR_VAPID_KEY' }) .then(token => console.log('Device token:', token)) .catch(err => console.error('Token error:', err));

// 监听前台消息 onMessage(messaging, payload => { console.log('Message received:', payload); new Notification(payload.notification.title, { body: payload.notification.body }); });

4. 后端集成:通过 Firebase Admin SDK 或 REST API 发送推送消息。  

---

### 使用 Service Worker 实现离线通知  
通过 Service Worker 可以在应用关闭时仍接收推送通知。  

示例 Service Worker 代码(`firebase-messaging-sw.js`):  
```javascript
importScripts('https://www.gstatic.com/firebasejs/9.0.0/firebase-app-compat.js');
importScripts('https://www.gstatic.com/firebasejs/9.0.0/firebase-messaging-compat.js');

firebase.initializeApp({
  apiKey: "YOUR_API_KEY",
  projectId: "YOUR_PROJECT_ID",
  messagingSenderId: "YOUR_SENDER_ID"
});

const messaging = firebase.messaging();

messaging.onBackgroundMessage(payload => {
  const notificationTitle = payload.notification.title;
  const notificationOptions = {
    body: payload.notification.body,
    icon: '/icon.png'
  };
  self.registration.showNotification(notificationTitle, notificationOptions);
});

其他方案(如 OneSignal)

第三方服务如 OneSignal 提供更简化的集成:

  1. 注册 OneSignal 并获取 App ID。
  2. 安装 SDK:
    npm install onesignal
  3. 初始化:
    
    import OneSignal from 'onesignal';

OneSignal.init({ appId: "YOUR_APP_ID", allowLocalhostAsSecureOrigin: true });

react如何实现手机通知



---

### 关键注意事项  
- 用户授权:所有通知需用户明确授权。  
- 移动端限制:iOS 浏览器对推送通知的支持有限,建议使用 FCM 或原生应用方案。  
- HTTPS 要求:大多数推送服务要求部署在 HTTPS 环境。

分享给朋友:

相关文章

vue实现通知

vue实现通知

Vue 实现通知功能 在 Vue 中实现通知功能可以通过多种方式,以下是几种常见的方法: 使用第三方库 Vue 生态中有许多专门用于通知的第三方库,如 vue-notification 或 ele…

vue如何实现滤镜

vue如何实现滤镜

Vue 实现滤镜的方法 在 Vue 中实现滤镜效果可以通过多种方式,以下是常见的几种方法: 使用 CSS filter 属性 通过 CSS 的 filter 属性可以直接为元素添加滤镜效果。在 Vu…

vue如何实现tap

vue如何实现tap

Vue 中实现类似移动端 tap 事件的方法 在 Vue 中可以通过以下几种方式实现类似移动端 tap(轻触)事件的效果: 使用第三方库 安装 v-tap 指令库可以快速实现 tap 事件: np…

vue如何实现滚动

vue如何实现滚动

Vue 实现滚动的方法 使用原生滚动 在Vue中可以直接使用HTML原生滚动,通过CSS设置overflow: auto或overflow: scroll来实现滚动效果。适用于简单场景。 <d…

前段vue如何实现

前段vue如何实现

Vue 前端实现方法 Vue 是一款流行的前端框架,用于构建用户界面。以下是一些常见的 Vue 实现方法: 组件化开发 Vue 的核心思想是组件化开发。每个组件可以独立封装逻辑、模板和样式,便于复用…

vue如何实现图

vue如何实现图

Vue 实现图表的方法 Vue 中实现图表可以通过多种方式,常见的有使用第三方库或自定义实现。以下是几种常见的方法: 使用 ECharts ECharts 是一个功能强大的图表库,支持多种图表类型。…