使用 api 时未收到 Firebase 消息

Firebase message not received while using api

我正在使用 Firebase API 使用 php 并使用 JSON 格式发送 post 数据。响应是 message_id 但消息未送达。

当我使用 Firebase 控制台而不是 API 具有相同的字段时,它已成功交付。

我的php代码:

<?php

$json_data = '{ "data": { 
                  "title": "Hey you got a message",
                  "text": "Hi from firebase api"
                },
                "to": "/topics/all",
                "priority": "high"
              }';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                                            'Content-Type: application/json',
                                            'Authorization:key="Used my server key here"'
                                          ));
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>

回复:

{"message_id":64666973642901*****}

PS: 使用星号隐藏信息。

更新: 当我将 to 字段设置为特定标记时,正在传递消息。但是当它设置为 topics/all 时不起作用。 有没有其他方法可以像在控制台中一样将其发送给所有与该应用关联的人?

我终于知道了。起初我们的应用程序不会包含任何主题,我们必须明确地创建它们。

在您的应用中使用以下方法订阅主题

FirebaseMessaging.getInstance().subscribeToTopic("NAME OF TOPIC");

因此,要将其发送给所有应用程序用户,请使用上述方法让您的每个用户订阅特定主题。我用 "all".

创建了它

现在将 JSON HTTP POST 请求中的 to 字段设置为 topics/NAME OF TOPICtopics/all 在我的例子中。

注意:订阅主题时,如果不存在该名称的主题,将自动创建新主题。