.NET Core中使用FirebaseAdmin在消息根级别添加priority字段
解决FirebaseAdmin .NET中Android退出状态下推送无法唤醒应用的问题
我之前也碰到过一模一样的问题——FirebaseAdmin 2.3.0版本的Message类只在AndroidConfig里提供了Priority属性,但当Android应用完全退出时,只有**根级别设置priority:10**才能让推送唤醒应用。下面是两种可行的解决方法:
方法一:直接发送原始JSON Payload
这种方式最直接,完全匹配你参考的JSON格式来构建消息:
using Newtonsoft.Json; using FirebaseAdmin.Messaging; // 构建符合要求的消息结构 var pushPayload = new { token = item.Token, android = new { priority = "high" }, priority = 10 // 根级别高优先级设置 }; // 序列化为JSON字符串 string jsonMessage = JsonConvert.SerializeObject(pushPayload); // 发送推送 await FirebaseMessaging.DefaultInstance.SendAsync(jsonMessage);
方法二:结合强类型AndroidConfig发送
如果你想继续使用SDK提供的AndroidConfig强类型对象,也可以这样组合:
using Newtonsoft.Json; using FirebaseAdmin.Messaging; // 先构建强类型的Android配置 var androidConfig = new AndroidConfig { Priority = Priority.High }; // 组合成包含根级别priority的消息结构 var pushPayload = new { Token = item.Token, Android = androidConfig, Priority = 10 }; string jsonMessage = JsonConvert.SerializeObject(pushPayload); await FirebaseMessaging.DefaultInstance.SendAsync(jsonMessage);
为什么这样有效?
Firebase的根级别priority字段是跨平台的高优先级标识,当值为10时,Android系统会将这条推送标记为高优先级,即使应用处于完全退出状态,也会唤醒应用并触发通知展示。而仅在AndroidConfig里设置优先级,在应用退出场景下是不足以触发唤醒的。
内容的提问来源于stack exchange,提问作者Yener
相关产品推荐
相关产品推荐

