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

FirebaseMessaging为空致SendMessage失败,求助推送通知问题解决

解决FirebaseMessaging.DefaultInstance为null的问题

问题根源

FirebaseMessaging.DefaultInstance 返回null的核心原因是Firebase Admin SDK未完成初始化。在调用任何Firebase服务之前,必须先通过服务账号密钥初始化FirebaseApp实例,否则无法获取有效的Messaging对象。

解决方案

1. 初始化FirebaseApp

在调用推送代码前,先执行Firebase SDK的初始化操作,建议在应用启动时执行一次,避免重复初始化报错:

// 替换为你的服务账号JSON文件路径
var serviceAccountPath = "path/to/your/service-account-file.json";

// 检查是否已初始化,避免重复初始化报错
if (FirebaseApp.DefaultInstance == null)
{
    var credential = GoogleCredential.FromFile(serviceAccountPath);
    FirebaseApp.Create(new AppOptions()
    {
        Credential = credential
    });
}

2. 修改原推送代码

确保初始化完成后,再获取FirebaseMessaging实例并发送消息:

var message = new FirebaseAdmin.Messaging.Message()
{
    Notification = new FirebaseAdmin.Messaging.Notification
    {
        Title = title,
        Body = body
    },
    Token = DeviceToken.First(),
    Apns = new ApnsConfig { Aps = new Aps { ContentAvailable = true, Sound = "default", Category = "test" } },
    Android = new AndroidConfig { Notification = new AndroidNotification { ClickAction = "test" } }
};

// 现在FirebaseMessaging.DefaultInstance不会为null
var messaging = FirebaseMessaging.DefaultInstance;
await messaging.SendAsync(message);

注意事项

  • 确保服务账号JSON文件的路径正确,在.NET项目中可设置文件的复制到输出目录属性为“如果较新则复制”,避免运行时找不到文件。
  • 服务账号需要拥有Firebase Cloud Messaging的权限,确保在Firebase控制台中已正确配置该账号的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:15:47