使用Slim Framework+Firebase推送通知时添加数据重复接收问题求助
Firebase推送通知重复接收问题解决(Slim Framework PHP API场景)
当你在推送payload中同时包含notification和data字段时,很容易出现单次发送收到两条通知的情况——原因是:
- Firebase SDK会自动识别
notification字段,直接在系统通知栏弹出一条通知; - 你的客户端代码如果还监听了
data消息,并手动触发通知展示,就会产生第二条重复通知。
两种解决办法:
只通过
data字段传递内容,由客户端全权处理通知
移除payload里的notification节点,把所有通知内容和自定义数据都放在data中,然后在客户端(Android/iOS)的消息回调里,读取data中的字段手动创建通知。示例PHP代码:$payload = [ 'to' => $deviceToken, 'data' => [ 'title' => '订单更新提醒', 'body' => '你的订单已发货', 'order_id' => '123456' ] ];保留
notification字段,客户端避免重复处理
如果依赖Firebase自动展示notification,请修改客户端逻辑:仅当推送是**纯data类型(无notification字段)**时,才手动弹出通知;对于同时包含notification和data的推送,只处理data里的业务逻辑,不重复创建通知。
额外检查点:
- 排查你的Slim API代码,是否存在重复调用Firebase发送接口的情况(比如路由重复匹配、循环逻辑错误);
- 确认客户端的消息监听代码,是否对
notification和data消息都执行了通知展示操作。
内容的提问来源于stack exchange,提问作者stephane nguema
相关产品推荐
相关产品推荐

