如何在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
相关产品推荐
相关产品推荐

