如何通过FMC+kreait/firebase-php设置Android通知角标计数?
Android推送通知角标直接设置(而非累加)方案
针对你的问题,首先需要明确:Android没有系统级统一的角标管理标准,不同厂商(华为、小米、三星等)有各自的实现逻辑。Firebase传递的notification_count字段只是把数值传给客户端,是否累加还是直接设置,最终由客户端代码决定。
1. kreait/firebase-php的正确配置方式
你可以用面向对象的写法替代数组配置,代码更清晰(效果与数组写法一致):
use Kreait\Firebase\Messaging\AndroidConfig; use Kreait\Firebase\Messaging\AndroidNotification; // 创建Android通知配置,传入目标角标数值 $androidNotification = AndroidNotification::new() ->withNotificationCount($badge_count); // 绑定到Android全局配置 $androidConfig = AndroidConfig::new() ->withNotification($androidNotification); // 将配置应用到推送消息 $message = $message->withAndroidConfig($androidConfig);
2. 解决“累加”问题的核心:客户端逻辑修改
你遇到的累加情况,是因为客户端默认把收到的notification_count和现有角标数做了相加操作。要实现直接设置,需要在客户端针对不同厂商做对应处理:
- 华为设备:调用华为角标SDK的
setBadgeNumber方法,直接传入收到的notification_count值 - 小米设备:调用小米推送SDK的
setBadgeNumber接口,将数值设置为收到的目标数 - 其他厂商:参考对应厂商官方文档,实现直接覆盖角标数的逻辑
只要客户端将收到的notification_count作为最终角标数,而非累加,就能实现你想要的“直接设置”效果。
内容的提问来源于stack exchange,提问作者Patrick Kenny
相关产品推荐
相关产品推荐

