使用PHP在firebase上创建一个主题

使用PHP在firebase上创建一个主题,php,firebase,firebase-cloud-messaging,Php,Firebase,Firebase Cloud Messaging,我想在运行时在firebase上创建主题。只要管理员在我的数据库中创建了某个记录,我就会创建相应的主题,以便与该主题相关联的用户可以使用firebase接收通知 在固定主题的情况下,我能够像这样成功地发送符号: public static function SendFireBaseBroadCast($topicName, $title, $body) { #API access key from Google API's Console define('AP

我想在运行时在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上运行时创建主题?

firebase消息主题无法单独创建-它们在一台设备订阅后立即开始存在,在没有设备订阅时停止存在

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

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

如果在应用程序中重命名某个主题,则需要将客户端重新订阅到新主题(最好从旧主题取消订阅)。您可以使用每个实例的实例ID API()来实现这一点。请注意,目前无法检索订阅主题的所有设备的列表。也不可能重命名主题并将所有订阅的设备从一个主题移动到另一个主题。这是您必须在应用程序级别实现的业务逻辑

Firebase管理SDK提供了管理主题订阅的方法,有关官方SDK的列表,请参阅


如果您需要/想要坚持使用PHP,在(免责声明:我是维护者)有一个非官方的管理SDK。

Firebase消息主题不能自己创建-它们在一台设备订阅后就开始存在,在没有设备订阅时就停止存在

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

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

如果在应用程序中重命名某个主题,则需要将客户端重新订阅到新主题(最好从旧主题取消订阅)。您可以使用每个实例的实例ID API()来实现这一点。请注意,目前无法检索订阅主题的所有设备的列表。也不可能重命名主题并将所有订阅的设备从一个主题移动到另一个主题。这是您必须在应用程序级别实现的业务逻辑

Firebase管理SDK提供了管理主题订阅的方法,有关官方SDK的列表,请参阅


如果你需要/想要坚持使用PHP,在(免责声明:我是维护者)

上有一个非官方的管理SDK,这是一个非常有用的人,谢谢你的解释。这是一个非常有用的人,谢谢你的解释。