【问题标题】:Create a TOPIC on firebase using PHP使用 PHP 在 Firebase 上创建主题
【发布时间】:2020-06-29 14:45:32
【问题描述】:

我想在运行时在 firebase 上创建主题。一旦管理员在我的数据库中创建了某个记录,我将创建相应的主题,以便与该主题关联的用户可以使用 firebase 接收通知。

在固定主题的情况下,我可以像这样成功发送符号:

public static function SendFireBaseBroadCast($topicName, $title, $body) {


        #API access key from Google API's Console
        define('API_ACCESS_KEY', 'API_KEY');
        $msg = array
            (
            'body' => $body,
            'title' => $title,
            'icon' => 'myicon', /* Default Icon */
            'sound' => 'mySound'/* Default sound */
        );
        $fields = array
            (
            'to' => "/topics/" . $topicName,
            'notification' => $msg
        );


        $headers = array
            (
            'Authorization: key=' . API_ACCESS_KEY,
            'Content-Type: application/json'
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
        $result = curl_exec($ch);
        curl_close($ch);

    }

如何在 firebase 运行时创建主题?

【问题讨论】:

    标签: php firebase firebase-cloud-messaging


    【解决方案1】:

    Firebase 消息主题无法自行创建 - 只要有一台设备订阅它们就会开始存在,而当没有设备订阅时它们就会停止存在。

    从服务器的角度来看,您可以向您选择的任何主题发送消息(只要名称本身有效)。 Firebase 在任何情况下都会接受该消息并将其传递给所有订阅的设备(如果没有订阅设备,则为 0)。

    如果您想将应用程序提供的可用主题发布到应用程序的所有客户端,则需要与 Firebase 分开执行此操作(例如,使用 API 端点)。

    如果您在应用程序中重命名主题,您需要为客户端重新订阅新主题(最好取消订阅旧主题)。您可以使用每个实例的实例 ID API (https://developers.google.com/instance-id/reference/server) 执行此操作。请注意,目前无法检索订阅主题的所有设备的列表。也无法重命名主题并将所有订阅的设备从一个主题移动到另一个主题。这是您必须在应用程序级别实现的业务逻辑。

    Firebase Admin SDK 提供了管理主题订阅的方法,有关官方 SDK 的列表,请参阅 https://firebase.google.com/docs/admin/setup

    如果您需要/想要坚持使用 PHP,https://github.com/kreait/firebase-php 有一个非官方的 Admin SDK(免责声明:我是维护者)

    【讨论】:

    • 这对人很有帮助,感谢您的解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    相关资源
    最近更新 更多