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

如何解决Android中ReactNativeFirebaseMessagingReceiver权限检测问题

修复React Native Firebase推送接收器的安全检测警告

问题描述

React Native应用运行正常,但安全检测时出现以下警告:

"Broadcast Receiver (io.invertase.firebase.messaging.ReactNativeFirebaseMessagingReceiver) is Protected by a permission, but the protection level of the permission should be checked."

当前Manifest中接收器配置如下:

<receiver
    android:name=".ReactNativeFirebaseMessagingReceiver"
    android:exported="true"
    android:permission="com.google.android.c2dm.permission.SEND">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    </intent-filter>
</receiver>

问题分析

警告指向的com.google.android.c2dm.permission.SEND是系统定义的权限,保护级别为signature——只有与谷歌服务签名一致的官方服务才能触发该接收器,本身是安全的配置。安全检测工具仅提示需确认权限合理性,避免误用低级别权限引发风险。

解决方案

方案1:依赖库自动配置(推荐)

若使用的react-native-firebase版本≥10,无需手动声明该接收器,库会自动合并正确的Manifest配置(含权限、导出属性等)。操作步骤:

  1. 打开AndroidManifest.xml,删除手动添加的上述<receiver>节点。
  2. 升级react-native-firebase到最新稳定版(若版本较旧)。
  3. 清理并重新编译项目:
    cd android && ./gradlew clean && cd .. && npx react-native run-android
    
  4. 重新执行安全检测,警告应当消除。

方案2:保留手动声明并确认权限合理性

若因特殊需求必须手动声明接收器,可通过以下方式处理:

  1. 确认android:permission="com.google.android.c2dm.permission.SEND"配置正确——该权限确保只有谷歌C2DM服务能触发接收器,无安全风险。
  2. 若检测工具仍提示,可在Manifest中显式声明该权限的保护级别(系统已定义,此步骤仅兼容检测工具):
    <permission android:name="com.google.android.c2dm.permission.SEND"
        android:protectionLevel="signature" />
    
  3. 重新编译项目并验证。

额外说明

  • 确保react-native-firebase的messaging模块配置符合官方集成步骤。
  • 若使用自定义接收器逻辑,需限制仅处理C2DM推送消息,避免暴露不必要功能。

内容的提问来源于stack exchange,提问作者abhigyan kr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:53:13