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

React Native集成FCM报错:未初始化Firebase [DEFAULT]应用

修复React Native Firebase FCM初始化错误及配置示例

你遇到的Error: No Firebase App '[DEFAULT]' has been created - call firebase.initializeApp()错误,核心原因是未完成Firebase默认应用的初始化——哪怕只使用FCM推送功能,也必须先完成Firebase的基础初始化流程,和是否需要数据库URL没有关系。

修复步骤及配置示例:

1. 确认依赖安装完整

FCM依赖@react-native-firebase/app核心包,先确保两个必要依赖都已安装:

npm install @react-native-firebase/app @react-native-firebase/messaging
# 或使用yarn
yarn add @react-native-firebase/app @react-native-firebase/messaging

2. FCM专属Firebase配置示例(无需数据库URL)

FCM确实不需要数据库URL,以下是适配FCM的配置片段:

  • Android:在android/app/google-services.json中保留核心FCM字段即可,无关字段可留空或删除:
    {
      "project_info": {
        "project_number": "你的项目编号",
        "project_id": "你的项目ID",
        "firebase_url": "",
        "storage_bucket": ""
      },
      "client": [
        {
          "client_info": {
            "mobilesdk_app_id": "你的App ID",
            "android_client_info": {
              "package_name": "你的应用包名"
            }
          },
          "api_key": [
            {
              "current_key": "你的API密钥"
            }
          ]
        }
      ],
      "configuration_version": "1"
    }
    
  • iOS:在ios/GoogleService-Info.plist中,保留GCM_SENDER_ID、PROJECT_ID、CLIENT_ID、API_KEY、APP_ID这些核心字段,无需DATABASE_URL。

3. 初始化Firebase应用

在应用入口(比如index.js或App.js顶部)添加初始化代码,避免重复初始化:

import { firebase } from '@react-native-firebase/app';

const firebaseConfig = {
  apiKey: "你的API密钥",
  projectId: "你的项目ID",
  messagingSenderId: "你的Sender ID",
  appId: "你的App ID"
  // 不需要databaseURL字段
};

if (!firebase.apps.length) {
  firebase.initializeApp(firebaseConfig);
}

4. 修改你的App组件代码

确保初始化完成后再调用FCM服务,同时补充权限请求逻辑(安卓13+和iOS都需要):

import 'react-native-gesture-handler';
import React, { useEffect } from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { Platform, PermissionsAndroid, Alert } from 'react-native';
import messaging from '@react-native-firebase/messaging';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

// 初始化Firebase(如果未在index.js中执行)
import { firebase } from '@react-native-firebase/app';
const firebaseConfig = {
  apiKey: "你的API密钥",
  projectId: "你的项目ID",
  messagingSenderId: "你的Sender ID",
  appId: "你的App ID"
};
if (!firebase.apps.length) {
  firebase.initializeApp(firebaseConfig);
}

const Stack = createNativeStackNavigator();

const App = () => {
  useEffect(() => {
    // 请求通知权限
    const requestNotificationPermission = async () => {
      if (Platform.OS === 'android') {
        await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS);
      } else {
        const authStatus = await messaging().requestPermission();
        const enabled = authStatus === messaging.AuthorizationStatus.AUTHORIZED || authStatus === messaging.AuthorizationStatus.PROVISIONAL;
        if (!enabled) Alert.alert('需要开启通知权限才能接收推送');
      }
    };

    requestNotificationPermission();

    // 监听前台消息
    const unsubscribe = messaging().onMessage(async remoteMessage => {
      Alert.alert('新的FCM消息', JSON.stringify(remoteMessage));
    });

    return unsubscribe;
  }, []);

  return (
    <NavigationContainer>
      <Stack.Navigator>
        {/* 你的页面路由配置 */}
      </Stack.Navigator>
    </NavigationContainer>
  );
};

export default App;

额外注意事项

  • 安卓需确保AndroidManifest.xml中已配置FCM服务(安装依赖后通常自动生成,若未生效需手动添加);
  • iOS需在Xcode的Capabilities中勾选Push Notifications开启推送能力。

内容的提问来源于stack exchange,提问作者Emmanuel Dufitumukiza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:28:19