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

Firebase .Net SDK如何针对iOS/Android分别推送适配的通知?

解决方案:通过Firebase .Net SDK分平台推送通知

核心思路:利用FCM平台专属配置

Firebase Cloud Messaging(FCM)支持在单条推送请求中,针对iOS和Android分别设置不同的负载规则,无需拆分两次发送。你可以通过SDK提供的平台配置类,为iOS保留Notification字段,为Android仅配置Data内容。

具体实现代码(C#)

借助MulticastMessage类的Android和Apns属性,分别指定双平台的推送规则:

using FirebaseAdmin;
using FirebaseAdmin.Messaging;
using Google.Apis.Auth.OAuth2;

// 全局初始化Firebase Admin SDK(仅需执行一次)
if (FirebaseApp.DefaultInstance == null)
{
    FirebaseApp.Create(new AppOptions()
    {
        Credential = GoogleCredential.FromFile("你的服务账号密钥文件路径.json"),
    });
}

// 构建跨平台推送消息
var crossPlatformMessage = new MulticastMessage()
{
    // 包含iOS和Android的设备令牌列表
    Tokens = new List<string> { "ios设备令牌", "android设备令牌" },
    
    // Android专属配置:仅传递Data,不设置Notification
    Android = new AndroidConfig()
    {
        Data = new Dictionary<string, string>
        {
            { "Key1", "Value1" },
            { "Title", "自定义标题" },
            { "Body", "自定义内容" }
        },
        Notification = null // 禁用默认通知推送
    },
    
    // iOS专属配置:使用标准Notification字段
    Apns = new ApnsConfig()
    {
        Aps = new Aps()
        {
            Alert = new ApsAlert()
            {
                Title = "自定义标题",
                Body = "自定义内容"
            }
        }
    }
};

// 发送并处理结果
var sendResponse = await FirebaseMessaging.DefaultInstance.SendMulticastAsync(crossPlatformMessage);
Console.WriteLine($"成功推送 {sendResponse.SuccessCount} 条,失败 {sendResponse.FailureCount} 条");

关键细节说明

  • Android端:通过AndroidConfig.Data传递所有业务字段,不配置Notification,确保应用在后台时能触发自定义消息接收逻辑。
  • iOS端:通过ApnsConfig.Aps.Alert设置通知内容,符合APNs规则,保证前台/后台都能正常显示通知。
  • 设备令牌:无需提前筛选平台,FCM会自动根据设备类型匹配对应的推送配置。

替代方案:按平台拆分发送

如果需要针对不同用户群体分开推送,可以提前将设备令牌按平台分类存储,分别构建对应负载:

仅向Android推送Data内容

var androidOnlyMessage = new MulticastMessage()
{
    Tokens = 预存储的Android令牌列表,
    Data = new Dictionary<string, string>
    {
        { "Key1", "Value1" },
        { "Title", "自定义标题" },
        { "Body", "自定义内容" }
    }
};
await FirebaseMessaging.DefaultInstance.SendMulticastAsync(androidOnlyMessage);

仅向iOS推送带Notification的内容

var iosOnlyMessage = new MulticastMessage()
{
    Tokens = 预存储的iOS令牌列表,
    Notification = new Notification()
    {
        Title = "自定义标题",
        Body = "自定义内容"
    },
    Data = new Dictionary<string, string>
    {
        { "Key1", "Value1" }
    }
};
await FirebaseMessaging.DefaultInstance.SendMulticastAsync(iosOnlyMessage);

内容的提问来源于stack exchange,提问作者Mr.Deer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:10:59