You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中使用Firebase Messaging能否撤销推送通知权限?

@react-native-firebase/messaging 推送权限撤销方案

iOS 和 Android 系统出于安全限制,都不允许第三方应用直接修改已授予的通知权限状态,没有对应的系统API可以实现应用内一键撤销权限,你可以选择以下两种符合平台规范的实现方式:

方案1:引导用户到系统设置页关闭权限(真正修改系统权限状态)

该方案会真实修改系统层面的通知权限开关,关闭后用户在系统设置中也能看到通知权限处于未授权状态,实现代码如下:

import { Linking, Platform } from 'react-native';
import messaging from '@react-native-firebase/messaging';

// 开关关闭时触发该方法
const revokeNotificationPermission = async () => {
  // 先删除FCM token,避免权限关闭前还有推送下发
  await messaging().deleteToken();
  // 跳转到应用系统设置页
  if (Platform.OS === 'ios') {
    Linking.openURL('app-settings:');
  } else {
    Linking.openSettings();
  }
}

后续你可以通过messaging().hasPermission()判断权限状态,返回false即代表用户已经关闭通知权限。

方案2:应用内无感知关闭推送(效果等同于撤销权限)

如果你不需要修改系统层面的权限状态,仅要实现开关关闭后设备完全不接收推送,可以采用删除FCM token+本地拦截的方案,这是目前绝大多数应用采用的实现方式:

  • 开关关闭时删除本地和Firebase云端存储的FCM token,Firebase就不会再向该设备下发任何推送
  • 本地存储开关状态,即便有特殊情况收到推送,也可以在前台回调中直接拦截不展示
  • 开关重新开启时,重新申请权限、获取新token上传到业务服务端即可

实现代码示例:

import AsyncStorage from '@react-native-async-storage/async-storage';
import messaging from '@react-native-firebase/messaging';

const togglePushNotification = async (isEnable) => {
  if (isEnable) {
    // 开启推送流程
    const authStatus = await messaging().requestPermission();
    const isAuthorized = authStatus === messaging.AuthorizationStatus.AUTHORIZED 
      || authStatus === messaging.AuthorizationStatus.PROVISIONAL;
    
    if (isAuthorized) {
      const fcmToken = await messaging().getToken();
      // 上传token到你的业务服务端存储
      await fetch('/your-api/save-fcm-token', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ token: fcmToken })
      });
      await AsyncStorage.setItem('push_notification_enabled', '1');
    }
  } else {
    // 关闭推送流程
    await messaging().deleteToken();
    // 调用业务服务端接口删除对应token
    await fetch('/your-api/delete-fcm-token', { method: 'POST' });
    await AsyncStorage.setItem('push_notification_enabled', '0');
  }
}

内容的提问来源于stack exchange,提问作者Lucas Goldner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:48:04