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

Symfony命令获取rms_push_notifications服务遇Buzz客户端参数错误求助

解决rms_push_notifications服务初始化报错问题

错误原因分析

这个报错的核心是依赖版本不兼容:你使用的richsage/rms-push-notifications-bundle和新版本的kriswallsmith/buzz(HTTP客户端)不匹配。Buzz 1.x+版本的AbstractClient构造函数强制要求传入至少一个LoggerInterface实例,但bundle的AndroidGCMNotification类在实例化Buzz客户端时,还是用了旧的无参构造方式,导致参数不足报错。


解决方案

根据你的需求,有两种可行的修复方式:

方案1:降级Buzz到兼容版本

如果不需要Buzz的新特性,最简单的方式是降级到bundle兼容的旧版本:

  1. 修改项目根目录的composer.json,指定Buzz版本:
{
    "require": {
        "kriswallsmith/buzz": "^0.16"
    }
}
  1. 执行更新命令:
composer update kriswallsmith/buzz

旧版Buzz的AbstractClient不需要Logger参数,bundle的原有代码就能正常运行。

方案2:手动配置依赖并覆盖bundle服务

如果想保留新版本Buzz,需要手动配置Buzz客户端,并覆盖bundle的Android通知服务,确保依赖正确注入:

  1. 在services.yml中添加以下配置:
services:
    # 配置Buzz Curl客户端,注入Symfony自带的Logger
    buzz.client:
        class: Buzz\Client\Curl
        arguments: ['@logger']

    # 覆盖rms的Android通知服务,注入我们配置好的Buzz客户端
    rms_push_notifications.android:
        class: RMS\PushNotificationsBundle\Service\OS\AndroidGCMNotification
        arguments:
            - '@buzz.client'
            - '%rms_push_notifications.android.fcm.api_key%'
            - '%rms_push_notifications.android.timeout%'
            - '%rms_push_notifications.android.fcm.use_multi_curl%'
        calls:
            - [setLogger, ['@logger']]
  1. 清除Symfony缓存,确保配置生效:
# 开发环境
php bin/console cache:clear
# 生产环境
php bin/console cache:clear --env=prod

额外检查

  • 你的SendNotif命令中获取服务的方式$this->container->get('rms_push_notifications')是正确的,主服务会自动依赖配置好的Android/IOS子服务。
  • 如果后续IOS通知也出现类似报错,可参照Android的配置方式,覆盖rms_push_notifications.ios服务,注入正确的客户端依赖。

内容的提问来源于stack exchange,提问作者Minirock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:39:23