You need to enable JavaScript to run this app. 如何在firebase-php中获取推送失败的设备token?
优惠活动
大模型
产品
解决方案
定价
更多

如何在firebase-php中获取推送失败的设备token?

你可以直接通过 $failure 对象的 target() 方法获取对应推送失败的token,不需要从错误实例中调用方法获取。

修改后的参考代码

if ($report->hasFailures()) {
    foreach ($report->failures()->getItems() as $failure) {
        // 获取对应推送失败的token
        $failedToken = $failure->target();
        // 输出错误信息
        echo "Token {$failedToken} 推送失败:" . $failure->error()->getMessage() . PHP_EOL;
        // 此处补充删除数据库中对应$failedToken的逻辑即可
    }
}

可选优化:过滤需要删除的token场景

部分推送失败并非token本身无效(比如频次限制、服务临时异常),建议仅当错误为token无效/未注册类问题时再执行删除操作,避免误删有效token:

use Kreait\Firebase\Exception\Messaging\InvalidToken;
use Kreait\Firebase\Exception\Messaging\RegistrationTokenNotRegistered;

if ($report->hasFailures()) {
    foreach ($report->failures()->getItems() as $failure) {
        $failedToken = $failure->target();
        $error = $failure->error();
        // 仅过滤token无效、未注册的场景执行删除
        if ($error instanceof InvalidToken || $error instanceof RegistrationTokenNotRegistered) {
            // 执行删除对应$failedToken的逻辑
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 01:27:03