FCM 设备 Token 验证:确保推送通知的有效性

聖光之護
发布: 2025-08-14 19:50:23
原创
574人浏览过

fcm 设备 token 验证:确保推送通知的有效性

在使用 Firebase Cloud Messaging (FCM) 进行推送通知时,一个常见的挑战是如何处理无效的设备 Token。例如,当用户在客户端(如 Chrome 或 Firefox)取消订阅通知,但服务器端数据库仍然保存着该设备的 Token 时,就会出现这种情况。这会导致向无效 Token 发送通知,浪费资源并可能影响用户体验。

为了解决这个问题,Firebase Admin SDK 提供了一个 validateRegistrationTokens 方法,允许开发者批量验证设备 Token 的有效性。以下将详细介绍如何使用这个方法,并提供一个 PHP 代码示例。

使用 Firebase Admin SDK 验证 Token

Firebase Admin SDK 提供了一系列工具,用于与 Firebase 服务进行交互。要使用 validateRegistrationTokens 方法,首先需要初始化 Firebase Admin SDK。

PHP 代码示例

以下是一个 PHP 类的示例,展示了如何使用 validateRegistrationTokens 方法批量验证 FCM Token。

知我AI·PC客户端
知我AI·PC客户端

离线运行 AI 大模型,构建你的私有个人知识库,对话式提取文件知识,保证个人文件数据安全

知我AI·PC客户端 0
查看详情 知我AI·PC客户端
<?php

use Kreait\Firebase\Factory;
use Kreait\Firebase\Contract\Messaging;
use Kreait\Firebase\Exception\MessagingException;
use Kreait\Firebase\Exception\FirebaseException;

class SomeController {

    /** @var Messaging */
    private Messaging $messaging;

    /** Constructor */
    public function __construct() {
        $factory = (new Factory)->withServiceAccount(getenv('GOOGLE_APPLICATION_CREDENTIALS'));
        $this->messaging = $factory->createMessaging();

    }

    /**
     * 验证设备注册 ID。
     *
     * @param string|string[] $token 要验证的 Token 数组或单个 Token 字符串
     * @return array|bool|Exception|MessagingException|FirebaseException 验证结果
     */
    public function validate_fcm_token( string|array $token=[] ): bool|Exception|MessagingException|array|FirebaseException {
        if ($token == null|| is_array($token) && (sizeof($token) === 0 || sizeof($token) > 500)) {return false;}
        else if (is_string($token)) {$token = [ $token ];}
        try {
            return $this->messaging->validateRegistrationTokens($token);
        } catch ( MessagingException | FirebaseException $e ) {
            return $e;
        }
    }
}
登录后复制

代码解释

  1. 引入必要的命名空间: 引入 Firebase Admin SDK 相关的类,包括 Factory、Messaging 等。
  2. 初始化 Firebase Admin SDK: 在构造函数中,使用 Factory 类初始化 Firebase Admin SDK,并创建 Messaging 实例。注意,需要设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量,指向包含服务帐户密钥的 JSON 文件。
  3. validate_fcm_token 方法:
    • 接受一个字符串或字符串数组作为参数,表示要验证的 Token。
    • 输入验证: 检查输入的 Token 是否为空,或者 Token 数组是否为空或超过 500 个。validateRegistrationTokens 方法最多支持一次验证 500 个 Token。
    • Token 转换: 如果输入的是单个 Token 字符串,将其转换为包含该 Token 的数组。
    • 调用 validateRegistrationTokens: 调用 messaging->validateRegistrationTokens($token) 方法,验证 Token 的有效性。
    • 异常处理: 使用 try...catch 块捕获可能发生的 MessagingException 或 FirebaseException 异常,并返回异常信息。
    • 返回结果: 返回验证结果。通常,结果会包含三个数组,分别是 valid(有效的 Token)、invalid(无效的 Token)和 unknown(状态未知的 Token)。

使用方法

  1. 获取 Token 列表: 从数据库中获取需要验证的 Token 列表。
  2. 调用 validate_fcm_token 方法: 将 Token 列表传递给 validate_fcm_token 方法。
  3. 处理验证结果: 根据返回结果,删除数据库中无效的 Token。

注意事项

  • validateRegistrationTokens 方法最多支持一次验证 500 个 Token。如果需要验证大量的 Token,需要将 Token 列表分割成多个批次进行验证。
  • validateRegistrationTokens 方法会返回无效的 Token 列表,但不会自动删除这些 Token。需要开发者自行删除数据库中对应的记录。
  • 在实际应用中,建议定期执行 Token 验证任务,例如每天或每周一次,以确保数据库中的 Token 保持最新。

总结

通过使用 Firebase Admin SDK 中的 validateRegistrationTokens 方法,可以有效地验证 FCM 设备 Token 的有效性,并及时清理数据库中无效的 Token。这有助于提高推送通知的准确性,减少资源浪费,并改善用户体验。请务必参考 Firebase 官方文档,了解更多关于 FCM 和 Firebase Admin SDK 的信息。

以上就是FCM 设备 Token 验证:确保推送通知的有效性的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号