Spring Boot集成Firebase发送推送报错:FirebaseApp [DEFAULT]不存在
问题分析与解决方案
错误原因
你初始化FirebaseApp时指定了自定义名称my-project-id,但调用FirebaseApp.getInstance()时,该方法默认会查找名为DEFAULT的实例,而当前环境中只有名为my-project-id的实例存在,因此抛出找不到默认实例的错误。
解决方法
方法一:使用默认名称初始化(推荐)
修改初始化方法,不指定自定义名称,让Firebase自动创建默认的DEFAULT实例:
@Override public void initFirebase() { FirebaseApp.initializeApp(); logger.info("firebase service initialized in FirebaseServiceImpl#initFirebase"); }
后续调用FirebaseApp.getInstance()就能正常获取到默认实例。
方法二:获取实例时指定自定义名称
如果确实需要保留自定义名称的实例,修改sendFirebaseMessage中获取实例的代码,指定你初始化时用的名称:
final FirebaseApp app = FirebaseApp.getInstance("my-project-id"); response = FirebaseMessaging.getInstance(app).send(message);
额外注意事项
确保initFirebase方法在sendFirebaseMessage之前执行,比如可以给initFirebase添加@PostConstruct注解,让Spring在Bean初始化阶段自动调用:
@PostConstruct @Override public void initFirebase() { // 初始化代码 }
内容的提问来源于stack exchange,提问作者quma
相关产品推荐
相关产品推荐

