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

Laravel FCM推送通知发送失败问题求助

Laravel FCM推送失败排查方案

1. 先排查异常捕获逻辑

你代码里的$this->errorHandler->convertException($e)可能没正确抛出错误,先把catch块改成直接输出异常信息,才能看到推送过程中到底出了什么问题:

catch (Throwable $e) {
    dd($e->getMessage(), $e->getTraceAsString());
}

2. 验证设备令牌有效性

  • 令牌可能因APP重装、系统更新失效,重新从设备端获取最新令牌再测试。
  • 直接用Firebase控制台的「云消息传递」功能,给该令牌发送测试推送,排除令牌本身的问题。

3. 检查FCM配置是否正确

.env里必须配置正确的服务器密钥和发送者ID:

FCM_KEY=你的Firebase服务器密钥
FCM_SENDER_ID=你的Firebase发送者ID

服务器密钥要从Firebase控制台「项目设置 > 云消息传递」里获取,别用Web API密钥。

4. 修正通知类的令牌处理方式

Laravel通知的设计是通过$notifiable对象获取令牌,硬编码令牌容易出错。在对应模型(比如User)里添加方法:

public function routeNotificationForFcm()
{
    return $this->device_token; // 假设模型里存了设备令牌字段
}

然后通知类里删掉setToken代码,让渠道自动从模型获取令牌:

return FcmMessage::create()
    ->setNotification(\NotificationChannels\Fcm\Resources\Notification::create()
        ->setTitle('Account Activated')
        ->setBody('Your account has been activated.'))
    ->setAndroid(
        AndroidConfig::create()
            ->setFcmOptions(AndroidFcmOptions::create()->setAnalyticsLabel('analytics'))
            ->setNotification(AndroidNotification::create()->setSound('default')));

5. 查看FCM响应日志

打开storage/logs/laravel.log,搜索fcm关键词,查看请求和响应详情,比如是否有invalid_token(令牌无效)、authentication_error(密钥错误)这类明确的错误码。

6. 确认设备端配置

  • Android端要确保google-services.json正确放在app目录,依赖包已正确引入。
  • 设备必须开启APP的通知权限,且APP处于可接收推送的状态(前台/后台均可,别被后台杀死)。

内容的提问来源于stack exchange,提问作者Андрей Двойкин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:51:25