使用C# .NET8调用FCM发送消息时遭遇event_time格式错误问题
解决FCM发送消息时
event_time格式无效的问题 问题分析
你遇到的错误是FCM服务提示event_time格式无效,但你并未主动设置该字段,手动设置后仍报错,大概率是以下原因:
- FCM SDK在实例化
AndroidNotification时,默认初始化了一个无效的EventTimestamp值(如DateTime.MinValue),该值无法被序列化为符合Protobuf要求的Timestamp格式 - 最新版本的FCM SDK可能存在序列化bug,导致未显式设置的字段被错误序列化发送
解决方案
1. 显式将EventTimestamp设为null
在初始化AndroidNotification时,主动将EventTimestamp设置为null,阻止SDK自动填充无效值:
var message = new Message() { Notification = new Notification { Title = title, Body = bodyparts[0] }, Android = new AndroidConfig() { Priority = Priority.High, Notification = new AndroidNotification() { Sound = "default", EventTimestamp = null, // 显式设置为null,避免默认无效值被序列化 }, }, Apns = new ApnsConfig() { Aps = new Aps() { ContentAvailable = true, Sound = "default", }, }, Token = to };
2. 回退到稳定版本的FCM SDK
如果是最近更新SDK后出现的问题,建议回退到之前验证过的稳定版本(例如使用FirebaseAdmin的话,可尝试回退到2.0.0版本),避免新版本的bug影响。
3. 检查是否存在间接赋值
排查代码中是否有扩展方法、配置类或其他逻辑,在你初始化AndroidNotification后间接修改了EventTimestamp字段。
验证方法
修改代码后,可开启FCM的调试日志,查看发送的请求体中是否还包含event_time字段,确认无效值已被移除。
内容的提问来源于stack exchange,提问作者Klaus Stabil-IT
相关产品推荐
相关产品推荐

