4

我正在使用使用 php 的 Firebase API 并使用 JSON 格式发送帖子数据。回复给了我,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。有没有其他方法可以像在控制台中一样将其发送给所有与应用程序关联的人?

4

1 回答 1

3

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

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

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

因此,要将其发送给所有应用程序用户,请使用上述方法让您的每个用户订阅特定主题。我用名称“all”创建了它。

现在将toJSON HTTP POST 请求中的字段设置为topics/NAME OF TOPICtopics/all在我的情况下。

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

于 2016-07-05T14:08:29.457 回答